학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 데이터 베이스를 찾을수 없다고 합니다. 프로젝트도 2번이나 새로 만들어 봤고 강의 보면서 다른게 있나 확인도 해봤는데 계속 안됩니다. DB의 문제일까요? org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'springConfig' defined in file [C:\class\code\springboot\hello-spring2\bin\main\com\spring2\SpringConfig.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception; nested exception is java.lang.IllegalStateException: Cannot load driver class: org.h2.Driver at org.springframework.beans.factory.support .ConstructorResolver.createArgumentArray( ConstructorResolver.java:800 ) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support .ConstructorResolver.autowireConstructor( ConstructorResolver.java:229 ) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.autowireConstructor( AbstractAutowireCapableBeanFactory.java:1372 ) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.createBeanInstance( AbstractAutowireCapableBeanFactory.java:1222 ) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.doCreateBean( AbstractAutowireCapableBeanFactory.java:582 ) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.createBean( AbstractAutowireCapableBeanFactory.java:542 ) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support .AbstractBeanFactory.lambda$doGetBean$0( AbstractBeanFactory.java:335 ) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support .DefaultSingletonBeanRegistry.getSingleton( DefaultSingletonBeanRegistry.java:234 ) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support .AbstractBeanFactory.doGetBean( AbstractBeanFactory.java:333 ) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support .AbstractBeanFactory.getBean( AbstractBeanFactory.java:208 ) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support .DefaultListableBeanFactory.preInstantiateSingletons( DefaultListableBeanFactory.java:955 ) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.context.support .AbstractApplicationContext.finishBeanFactoryInitialization( AbstractApplicationContext.java:918 ) ~[spring-context-5.3.25.jar:5.3.25] at org.springframework.context.support .AbstractApplicationContext.refresh( AbstractApplicationContext.java:583 ) ~[spring-context-5.3.25.jar:5.3.25] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh( ServletWebServerApplicationContext.java:147 ) ~[spring-boot-2.7.8.jar:2.7.8] at org.springframework.boot.SpringApplication.refresh( SpringApplication.java:731 ) ~[spring-boot-2.7.8.jar:2.7.8] at org.springframework.boot.SpringApplication.refreshContext( SpringApplication.java:408 ) ~[spring-boot-2.7.8.jar:2.7.8] at org.springframework.boot.SpringApplication.run ( SpringApplication.java:307 ) ~[spring-boot-2.7.8.jar:2.7.8] at org.springframework.boot.SpringApplication.run ( SpringApplication.java:1303 ) ~[spring-boot-2.7.8.jar:2.7.8] at org.springframework.boot.SpringApplication.run ( SpringApplication.java:1292 ) ~[spring-boot-2.7.8.jar:2.7.8] at com.spring2.HelloSpring2Application.main( HelloSpring2Application.java:10 ) ~[main/:na] 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.boot.devtools.restart.RestartLauncher.run ( RestartLauncher.java:49 ) ~[spring-boot-devtools-2.7.8.jar:2.7.8] Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception; nested exception is java.lang.IllegalStateException: Cannot load driver class: org.h2.Driver at org.springframework.beans.factory.support .ConstructorResolver.instantiate( ConstructorResolver.java:658 ) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support .ConstructorResolver.instantiateUsingFactoryMethod( ConstructorResolver.java:638 ) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod( AbstractAutowireCapableBeanFactory.java:1352 ) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.createBeanInstance( AbstractAutowireCapableBeanFactory.java:1195 ) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.doCreateBean( AbstractAutowireCapableBeanFactory.java:582 ) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.createBean( AbstractAutowireCapableBeanFactory.java:542 ) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support .AbstractBeanFactory.lambda$doGetBean$0( AbstractBeanFactory.java:335 ) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support .DefaultSingletonBeanRegistry.getSingleton( DefaultSingletonBeanRegistry.java:234 ) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support .AbstractBeanFactory.doGetBean( AbstractBeanFactory.java:333 ) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support .AbstractBeanFactory.getBean( AbstractBeanFactory.java:208 ) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate( DependencyDescriptor.java:276 ) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support .DefaultListableBeanFactory.doResolveDependency( DefaultListableBeanFactory.java:1391 ) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support .DefaultListableBeanFactory.resolveDependency( DefaultListableBeanFactory.java:1311 ) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support .ConstructorResolver.resolveAutowiredArgument( ConstructorResolver.java:887 ) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support .ConstructorResolver.createArgumentArray( ConstructorResolver.java:791 ) ~[spring-beans-5.3.25.jar:5.3.25] ... 24 common frames omitted Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception; nested exception is java.lang.IllegalStateException: Cannot load driver class: org.h2.Driver at org.springframework.beans.factory.support .SimpleInstantiationStrategy.instantiate( SimpleInstantiationStrategy.java:185 ) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support .ConstructorResolver.instantiate( ConstructorResolver.java:653 ) ~[spring-beans-5.3.25.jar:5.3.25] ... 38 common frames omitted Caused by: java.lang.IllegalStateException: Cannot load driver class: org.h2.Driver at org.springframework.util.Assert.state( Assert.java:97 ) ~[spring-core-5.3.25.jar:5.3.25] at org.springframework.boot.autoconfigure.jdbc.DataSourceProperties.determineDriverClassName( DataSourceProperties.java:171 ) ~[spring-boot-autoconfigure-2.7.8.jar:2.7.8] at org.springframework.boot.autoconfigure.jdbc.DataSourceProperties.initializeDataSourceBuilder( DataSourceProperties.java:123 ) ~[spring-boot-autoconfigure-2.7.8.jar:2.7.8] at org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration.createDataSource( DataSourceConfiguration.java:48 ) ~[spring-boot-autoconfigure-2.7.8.jar:2.7.8] at org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration$Hikari.dataSource( DataSourceConfiguration.java:90 ) ~[spring-boot-autoconfigure-2.7.8.jar:2.7.8] 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.3.25.jar:5.3.25] ... 39 common frames omitted 이렇게 에러가 나오고 h2도 실행시킨 상태에서 했는데 원인을 모르겠습니다..
안녕하세요 log.info ()에 빨간줄이 그어지면서 에러가 났었습니다. 저와 동일한 문제가 발생하신 분들께 도움이 될까 글 남깁니다. @Slf4j 어노테이션을 달아주니 log.info에 빨간줄이 사라지면서 작동하였습니다. 다른 좋은 해결방법이 있다면 알려주세요! (참고 : https://okky.kr/articles/532274 )
안녕하세요. 강의를 잘 듣고 있습니다! 다름이 아니라, Bean의 생명주기 메소드 강의에서 마지막 부분이 HelloController의 applicationContext를 생성자 주입하는 코드로 변경하면서 끝이 납니다. 그런데 DI와 단위 테스트 강의에서 HelloController의 테스트 코드를 작성할 때 보여주시는 HelloController.java의 코드를 보면 applicationContext를 생성자에서 파라미터로 받는 부분이 없어져 있습니다. 2개의 강의 사이에서 applicationContext를 파라미터로 받는 코드를 리팩토링하는 부분을 설명해주시는 부분이 제가 찾기에는 보이지 않아서... 혹시 보충 설명을 해주시면 감사하겠습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 헷갈리는 부분이 있어 질문드립니다. em.persist(member) 를 하게 되면 DB에 저장이 바로 되는건지, 영속성 컨텍스트에만 저장이 되는건지 궁금합니다. 그리고 DB 연결이 안되어 있는 상황에서 em.persist(member) 를 하게 된다면 어디에 저장이 되는 건지도 헷갈립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 실무에서 스프링 시큐리티를 주로 사용하는지, 로그인 세션 기능 같은 부분들은 직접 구현을 하는지 아니면 스프링 제공 기능을 사용하는지 궁금합니다.
실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
21강 책의분야 추가하기에서 v1이 아닌 v2에서 사용자등록, 책등록을 실행하려고하면 서버에 여녁ㄹ이 불가능하거나, 네트워크 오류입니다 라는 alert창을 출력하고 Itellij내의 오류는 발생하지 않고 v1에서는 문제없이 저장이 잘됩니다,, 그래서 코드에 문제가 있나해서 library-app-complete로 실행해봐도 똑같은 오류가 발생하고 console창에는 아무런 오류도 발생하지 않습니다 ,, oracle과 port번호 충돌이 일어나서 port번호를 변경해 줬습니다 Application.tml build.gradle
안녕하세요. 강의 너무 재미있게 잘 듣고 있습니다. 강의 듣다가 클래스 로더를 가져오는 부분에서 의문점이 있는데요(사실 이전부터 개념이 명확하지 않아 어려움이 있었습니다) MyOnClassCondition 만들면서 context.getClassLoader() 이렇게 클래스 로더를 가져왔는데 이렇게 가져오는 것과 this.getClass().getClassLoader() 이렇게 가져오는 것이 어떠한 차이가 있는지 궁금합니다. 둘다 동작은 잘 되거든요. 스프링 부트와 크게 관련된건 아니라고 생각들지만 인터넷 글을 봐도 명확하게 이해가 잘 안되서 초고수 토비님께 문의드립니다. 명강의 감사합니다.!!
안녕하세요 해당 강의를 통해서 OAuth2 로그인을 따라해보면서, 궁금한 점이 생겨서 질문 드립니다. 만약에 기존 유저에 OAuth2 로그인을 적용시키려면 어떻게 하는 지 궁금하네요.. 요즘 여러 서비스에서, OAuth2를 도입하고 기존 계정에 Toggle 버튼 같이 네이버, 카카오 등을 On, Off 할 수 있는 기능들을 제공합니다 하지만 Spring Security OAuth2 Login 기능으로 기존 계정에 on,off 처럼 연결이 가능할까 의문도 들고 생각도 해봤지만 도저히 떠오르지 않더라구여 더군다나 기존 계정에 JWT 로 인증을 하고 있었다면 불가능하지 않나 생각이 들었습니다. 너무 막연하게 질문을 드렸는데, 정확하게 알고 싶은 것은 유저 상세 페이지에서 토글 버튼 같은 것으로 네이버 연동을 시도하여 네이버 로그인을 시도했을 때, OAuth2UserService 에서 기존 유저에 대한 정보를 알 수 있는 방법이 있는 지 궁금합니다
cannot acess 에러가 발생하는데, 실제, 코드를 돌리면 컴파일 및 런타임 에러 없이 동작합니다. Access 에러 길래, 접근 제어자 문제로 판단하였으나, 전부 Public 이라 딱히 문제도 없는것 같은데, 저만 그런건지 궁금합니다. registerBean 에서도 해당 클래스를 불러오기 때문에, 여기서도 에러가 뜬다면 이해하겠으나.. 해당 부분은 문제없고.. 밑에서만 떠서... 궁금합니다 [참고로, 실행하면 컴파일 에러 없이 실행 되고... IDE 상에서는 에러로 계속 남아 있습니다. ] package com.example.helloboot; import org.apache.catalina.startup.Tomcat; import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; import org.springframework.boot.web.server.WebServer; import org.springframework.boot.web.servlet.ServletContextInitializer; import org.springframework.context.support.GenericApplicationContext; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; public class HellobootApplication { public static void main(String[] args) { // Spring Container 생성 Context 가 Container 임 // 컨테이너 생성 GenericApplicationContext applicationContext = new GenericApplicationContext(); // 오브젝트 (빈) 등록 applicationContext.registerBean(HelloController.class); // 오브젝트 생성 요청 applicationContext.refresh(); // [Step 1] Servlet 컨테이너 생성 // Factory 생성과 설정 작업등을 대신 해주는 대상 TomcatServletWebServerFactory serverFactory = new TomcatServletWebServerFactory(); WebServer webServer = serverFactory.getWebServer(servletContext -> { servletContext.addServlet("frontcontroller", new HttpServlet() { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 인증, 보안 , 다국어, 공통 기능 등 처리 if (req.getRequestURI().equals("/hello") && req.getMethod().equals(HttpMethod.GET.name())) { String name = req.getParameter("name"); // binding 데이터를 처리하는 오브젝트에 데이터를 넘기는 것 HelloController helloController = applicationContext.getBean(HelloController.class); String ret = helloController.hello(name); resp.setContentType(MediaType.TEXT_PLAIN_VALUE); resp.getWriter().println(ret); } else { resp.setStatus(HttpStatus.NOT_FOUND.value()); } } }).addMapping("/*"); }); webServer.start(); } }
스프링 bean 관련 공부를 하던중 구글링을 통해 정리를 해보려 했지만 헷갈려서 질문드립니다. spring container가 빈을 생성하고 생성자가 여러차례 호출되어도 실제로 생성되는 객체는 하나이며 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 가르킨다고 알고있는 상태입니다. 제가 알고 있는 부분이 맞는지 그러면 test class에서 @beforeEach에 객체를 테스트 실행전 매번 새로 생성하는데 이것은 사실 결국은 하나의 최초객체를 가르킨다는 얘기인가요???
안녕하세요 선생님 강의에서 알려주신 설정들 중 spring.datasource.data=classpath:/data.sql spring.datasource.initialization-mode=always 두개가 Deprecated 라고 표시되면서 대체해서 사용할 수 있는 걸 알려주는데 이렇게 사용해도 될까요? 변경 후 서버를 실행해보면 돌아갑니다. 변경 전 ↓ 변경 후 ↓
사용 환경은 맥, intellij입니다 spring config 시작한 뒤로 이러는데 yml파일이나 xml(메이븐)파일을 수정해놔도 어느 순간 이상해서 보면 수정 전으로 돌아가있습니다 ㅜㅜ 인텔리제이 캐시도 초기화해봤고 git에도 올려서 커밋까지 했는데 왜이러는지 모르겠어요.. 강의랑은 무관한 질문인 것 같아서 망설이다가 이것 때문에 전혀 진도를 나가지 못하고 있는 상황이라 여쭤봅니다 혹시 모르신다면 제가 알아서 잘 해결해보겠습니다! 불필요한 질문 드려 죄송합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 갑자기 화면에 저것만 계속뜨고 실행되지않아요,, 지우고 깔아봤는데도..