월 19,800원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결스프링 기반 REST API 개발
스프링 시큐리티 기본 설정에서 로그인없이 접근불가능과 메인어플리케이션 실행불가능
@Override public void configure(WebSecurity web) throws Exception { web.ignoring().mvcMatchers("/docs/index.html"); web.ignoring().requestMatchers(PathRequest.toStaticResources().atCommonLocations()); } 위 메소드를 통해 localhost:8080/docs/index.html 에 로그인없이 접근이 가능해야하는데 이게 불가능하고 로그인창이 나타나네요 @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .mvcMatchers("/docs/index.html").anonymous() .requestMatchers(PathRequest.toStaticResources().atCommonLocations()); } 1번의 configure(WebSecurity web) 메소드 문제는 일단 냅두고(주석처리) 다음configure(HttpSecurity http) 메소드를 진행해봤는데 해당 메소드를 작성하니 메인어플리케이션이 오류 때문에 아예 실행이 안되네요. jdk 8을 사용해서 그런가 싶어서 jdk 11로 바꿔봤는데도 해결이 안되요...밑에는 에러로그입니다. WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.apache.catalina.loader.WebappClassLoaderBase (file:/C:/Users/kyeongjun/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/9.0.12/tomcat-embed-core-9.0.12.jar) to field java.io.ObjectStreamClass$Caches.localDescs WARNING: Please consider reporting this to the maintainers of org.apache.catalina.loader.WebappClassLoaderBase WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release 2019-01-26 20:11:27.043 INFO 1276 --- [ main] ConditionEvaluationReportLoggingListener : Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2019-01-26 20:11:27.052 ERROR 1276 --- [ main] o.s.boot.SpringApplication : Application run failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'springSecurityFilterChain' defined in class path resource [org/springframework/security/config/annotation/web/configuration/WebSecurityConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.servlet.Filter]: Factory method 'springSecurityFilterChain' threw exception; nested exception is java.lang.IllegalStateException: An incomplete mapping was found for [org.springframework.boot.autoconfigure.security.servlet.StaticResourceRequest$StaticResourceRequestMatcher@1ba3c03d]. Try completing it with something like requestUrls()..hasRole('USER') at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:625) ~[spring-beans-5.1.2.RELEASE.jar:5.1.2.RELEASE] at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:455) ~[spring-beans-5.1.2.RELEASE.jar:5.1.2.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1288) ~[spring-beans-5.1.2.RELEASE.jar:5.1.2.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1127) ~[spring-beans-5.1.2.RELEASE.jar:5.1.2.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:538) ~[spring-beans-5.1.2.RELEASE.jar:5.1.2.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:498) ~[spring-beans-5.1.2.RELEASE.jar:5.1.2.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320) ~[spring-beans-5.1.2.RELEASE.jar:5.1.2.RELEASE] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) ~[spring-beans-5.1.2.RELEASE.jar:5.1.2.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318) ~[spring-beans-5.1.2.RELEASE.jar:5.1.2.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-5.1.2.RELEASE.jar:5.1.2.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:307) ~[spring-beans-5.1.2.RELEASE.jar:5.1.2.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-5.1.2.RELEASE.jar:5.1.2.RELEASE] at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:846) ~[spring-beans-5.1.2.RELEASE.jar:5.1.2.RELEASE] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:863) ~[spring-context-5.1.2.RELEASE.jar:5.1.2.RELEASE] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:546) ~[spring-context-5.1.2.RELEASE.jar:5.1.2.RELEASE] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140) ~[spring-boot-2.1.0.RELEASE.jar:2.1.0.RELEASE] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:775) ~[spring-boot-2.1.0.RELEASE.jar:2.1.0.RELEASE] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) ~[spring-boot-2.1.0.RELEASE.jar:2.1.0.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:316) ~[spring-boot-2.1.0.RELEASE.jar:2.1.0.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1260) ~[spring-boot-2.1.0.RELEASE.jar:2.1.0.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1248) ~[spring-boot-2.1.0.RELEASE.jar:2.1.0.RELEASE] at com.example.lec1.Lec1Application.main(Lec1Application.java:12) ~[classes/:na] Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.servlet.Filter]: Factory method 'springSecurityFilterChain' threw exception; nested exception is java.lang.IllegalStateException: An incomplete mapping was found for [org.springframework.boot.autoconfigure.security.servlet.StaticResourceRequest$StaticResourceRequestMatcher@1ba3c03d]. Try completing it with something like requestUrls()..hasRole('USER') at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) ~[spring-beans-5.1.2.RELEASE.jar:5.1.2.RELEASE] at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:620) ~[spring-beans-5.1.2.RELEASE.jar:5.1.2.RELEASE] ... 21 common frames omitted Caused by: java.lang.IllegalStateException: An incomplete mapping was found for [org.springframework.boot.autoconfigure.security.servlet.StaticResourceRequest$StaticResourceRequestMatcher@1ba3c03d]. Try completing it with something like requestUrls()..hasRole('USER') at org.springframework.security.config.annotation.web.configurers.AbstractConfigAttributeRequestMatcherRegistry.createRequestMap(AbstractConfigAttributeRequestMatcherRegistry.java:111) ~[spring-security-config-5.1.3.RELEASE.jar:5.1.3.RELEASE] at org.springframework.security.config.annotation.web.configurers.ExpressionUrlAuthorizationConfigurer.createMetadataSource(ExpressionUrlAuthorizationConfigurer.java:198) ~[spring-security-config-5.1.3.RELEASE.jar:5.1.3.RELEASE] at org.springframework.security.config.annotation.web.configurers.ExpressionUrlAuthorizationConfigurer.createMetadataSource(ExpressionUrlAuthorizationConfigurer.java:81) ~[spring-security-config-5.1.3.RELEASE.jar:5.1.3.RELEASE] at org.springframework.security.config.annotation.web.configurers.AbstractInterceptUrlConfigurer.configure(AbstractInterceptUrlConfigurer.java:75) ~[spring-security-config-5.1.3.RELEASE.jar:5.1.3.RELEASE] at org.springframework.security.config.annotation.web.configurers.ExpressionUrlAuthorizationConfigurer.configure(ExpressionUrlAuthorizationConfigurer.java:81) ~[spring-security-config-5.1.3.RELEASE.jar:5.1.3.RELEASE] at org.springframework.security.config.annotation.web.configurers.AbstractInterceptUrlConfigurer.configure(AbstractInterceptUrlConfigurer.java:67) ~[spring-security-config-5.1.3.RELEASE.jar:5.1.3.RELEASE] at org.springframework.security.config.annotation.AbstractConfiguredSecurityBuilder.configure(AbstractConfiguredSecurityBuilder.java:384) ~[spring-security-config-5.1.3.RELEASE.jar:5.1.3.RELEASE] at org.springframework.security.config.annotation.AbstractConfiguredSecurityBuilder.doBuild(AbstractConfiguredSecurityBuilder.java:330) ~[spring-security-config-5.1.3.RELEASE.jar:5.1.3.RELEASE] at org.springframework.security.config.annotation.AbstractSecurityBuilder.build(AbstractSecurityBuilder.java:41) ~[spring-security-config-5.1.3.RELEASE.jar:5.1.3.RELEASE] at org.springframework.security.config.annotation.web.builders.WebSecurity.performBuild(WebSecurity.java:294) ~[spring-security-config-5.1.3.RELEASE.jar:5.1.3.RELEASE] at org.springframework.security.config.annotation.web.builders.WebSecurity.performBuild(WebSecurity.java:79) ~[spring-security-config-5.1.3.RELEASE.jar:5.1.3.RELEASE] at org.springframework.security.config.annotation.AbstractConfiguredSecurityBuilder.doBuild(AbstractConfiguredSecurityBuilder.java:334) ~[spring-security-config-5.1.3.RELEASE.jar:5.1.3.RELEASE] at org.springframework.security.config.annotation.AbstractSecurityBuilder.build(AbstractSecurityBuilder.java:41) ~[spring-security-config-5.1.3.RELEASE.jar:5.1.3.RELEASE] at org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration.springSecurityFilterChain(WebSecurityConfiguration.java:104) ~[spring-security-config-5.1.3.RELEASE.jar:5.1.3.RELEASE] at org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration$$EnhancerBySpringCGLIB$$c881c394.CGLIB$springSecurityFilterChain$5() ~[spring-security-config-5.1.3.RELEASE.jar:5.1.3.RELEASE] at org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration$$EnhancerBySpringCGLIB$$c881c394$$FastClassBySpringCGLIB$$ef88c264.invoke() ~[spring-security-config-5.1.3.RELEASE.jar:5.1.3.RELEASE] at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244) ~[spring-core-5.1.2.RELEASE.jar:5.1.2.RELEASE] at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:363) ~[spring-context-5.1.2.RELEASE.jar:5.1.2.RELEASE] at org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration$$EnhancerBySpringCGLIB$$c881c394.springSecurityFilterChain() ~[spring-security-config-5.1.3.RELEASE.jar:5.1.3.RELEASE] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na] at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.1.2.RELEASE.jar:5.1.2.RELEASE] ... 22 common frames omitted Process finished with exit code 1
- 미해결스프링 기반 REST API 개발
스프링 시큐리티 OAuth2 인증 서버 설정의 TDD 부분입니다.
스프링기반 resp api 개발의 ”스프링 시큐리티 OAuth2 인증 서버 설정” 7분 47초 부분입니다. 개인적으로 제PC에서 postgresql 보다 Oracle이 설치되어 있어 테스트를 했는데, TDD로 했을때는 정상적으로 토콘이 발급이 되는데..(OK) postman이나 curl 등 다른것으로 했을 때는 권한이 없다고 에러가 납니다. 2019-01-26 11:28:11.276 DEBUG 20296 — [nio-8080-exec-3] o.s.s.w.a.ExceptionTranslationFilter : Access is denied (user is anonymous); redirecting to authentication entry point 테스트할때와 그냥 실행할때와 다릅니다. *** 원 기존의 소스에서 수정하여 테스트한부분이 oracle db로 바꾸었을 뿐입니다. (처음에는 account,event, token 까지 모두 oracle 쪽을 접속하여 했는데, 계속 같은 에러가 나오길래 , token 쪽은 현소스 그래도 inmemory 에 가르키게 했고, 바뀐 부분은 test 및 실행시에 account, event 테이블이 oracle로 가르키게 바뀐부분입니다.) 제가 PostgreSQL로 테스트하지 않았지만.. 동일한것 같아서요.. TDD와 web혹은 다른툴(postman)에서 실행했을때 왜 다른지 궁금하여 질문을 드리게 되었습니다. *소스는 git에서 받은걸로 사용하였습니다. 초기에 자동으로 table을 자동실행했으나, 그 이후에는 생성옵션 없이 사용하였고, account, account_roles 계정에 user, admin 각각 테이터가 존재하는 일반적인 상황 입니다. 감사합니다.
- 미해결스프링 기반 REST API 개발
소스코드 에러
소스코드를 열면클래스에 getter,setter도 없어서 Cannot resolve method 뜨는데직접 만들어야 하는건가요?그리고 빨간줄 가는게 한두개가 아닌데 메이븐 빌드 오류일까요도와주세요
- 해결됨스프링 기반 REST API 개발
프로젝트 패키지를 도메인단위로?
스프링 프로젝트들을보면 패키지명을 controller, dto, repository 이런단위로 만들고관련클래스 파일을 모아놓는식으로 사용하는걸 많이 봤는데요, 강좌에서는 events, accounts 도메인(?) 단위로 만드셨잖아요.현업에서도 이렇게 사용을 많이 할까요?이렇게 구성시는 이유? 좋은점은 뭘까요?
- 미해결스프링 기반 REST API 개발
java.lang.IllegalStateException: Failed to load ApplicationContext
안녕하세요 백강사님. 강좌 잘 듣고 있습니다.강좌 끝에서 테스트 폴더를 Run > Test Scripts 를 돌렸더니 아래 파일에서 테스트가 깨집니다.에러 메시지를 보면 뭔가 Jdbc 설정에서 깨진 것 같은데, 이유를 모르겠습니다. 백강사님의 소스를 보니 위의 @RunWith(SpringRunner.class)@SpringBootTest 어노테이션을 지워두셨던데, 혹시 이유를 알 수 있을까요? https://gitlab.com/whiteship/natural/blob/master/src/test/java/me/whiteship/natural/NaturalApplicationTests.java Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]spring-rest-api-demo/src/test/java/me/whiteship/springrestapidemo/SpringRestApiDemoApplicationTests.javapackage me.whiteship.springrestapidemo;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.context.junit4.SpringRunner;@RunWith(SpringRunner.class)@SpringBootTestpublic class SpringRestApiDemoApplicationTests { @Test public void contextLoads() { }}
- 미해결스프링 기반 REST API 개발
질문 드립니다.
수고하십니다.강의 열심히 듣고 있습니다. 감사합니다.몇가지 질문 드리겠습니다.바쁘시겠지만 답변 부탁 드리겠습니다.질문 1Header 의 Location 정보는ResponseEntity.created(uri정보)에 의해 만들어 지는건가요?질문 2컨트롤러의 에노테이션이 @RestController이고 반환되는 데이터 타입이 객체(예: User)인 경우디폴트로 json형태로 반환되는지요질문3ResponseEntity로 반환 하는건 객체를 body에 담을 수도 있고 헤더 정보등을 셋팅 할수 있기 때문에 사용 하는 건지요
- 미해결스프링 기반 REST API 개발
별로 중요한건 아니고, 오타가 있어서 알려드립니다 :)
문서 및 강의 소개글에 Self-Describtive를 Self-Descriptive 바꾸셔야 할것 같습니다
- 미해결스프링 기반 REST API 개발
Spring RestDoc 필드 문서화
강의를 보면 필드 문서회시 테스트 코드에서 필드에 대한 설명을 일일이 추가하는데 Swagger 처럼 도메인 객체의 어노테이션 주석을 가져와서 문서화 하거나 자바독을 가져와서 문서화하는 방법은 있나요?