묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 데이터 JPA
비동기 쿼리
안녕하세요 기선님 항상 좋은 강의 감사드립니다! 매 영상마다 질문을 남기는 것 같아 죄송하네요.. 비동기 쿼리에 대한 내용을 제 나름대로 요약해서 해석해보려 노력중인데 곡해가 있을까 걱정이 되어 이렇게 글을 남깁니다. 비동기 쿼리를 사용하는 것을 보니, 쿼리를 날리고 데이터를 받아오기 전까지 메인 쓰레드를 놀리지 않기 위해 비동기 쿼리를 사용하는 것으로 보입니다. 그런데 Future 을 사용하면 결국 get 으로 받아오는 작업에서 메인쓰레드가 블로킹이 되니까 Future 보단 콜백메서드를 사용할 수 있는 ListenableFuture 을 사용하는 걸 추천하신거라고 이해 됩니다. 그렇다면 여기서 조금 쓸모없는(?) 작업이긴 하지만 Future 의 get 을 받는 Thread 를 직접 구현해도 되겠다는 생각도 듭니다. 그리고 비동기 쿼리에 대한 테스트 코드 작성이 어려운 이유는 테스트의 특성상 위 테스트는 작업 전체가 한 트랜잭션이 될 테고, save 된 데이터를 가져오기 위한 쓰레드가 작업을 마치기도 전에 메인쓰레드가 끝나버리면서 하이버네이츠의 DB에 변화를 가져오지 않는 쿼리는 날리지도 않는 특성에 의해 insert 쿼리 조차 날라가지 않는 테스트가 되는 거구요. 의도적으로 flush() 를 통해 insert 를 할 수 는 있으나, insert 와 같은 트랜잭션 안에서 시작된 select 쿼리는 그 트랜잭션 내에서 insert가 된 데이터를 인지할 방법은 없게 된다는 설명으로 이해했습니다. 그렇다면.. 테스트를 위해서 @BeforeEach 를 통해 데이터를 먼저 집어넣은 상태로 동작을 확인할 수 있진 않을까 했지만, 이 작업자체도 DB의 변화를 일으키는 작업이 아닌만큼 하이버네이츠가 insert 를 날리지조차 않더군요. 그래서 위 코드에서 flush()를 추가하여 insert를 날렸지만.. 결과는 이렇더군요... 그런데 제 나름대로의 해석으로는 마지막 결과가 조금 이해가 되지 않네요.. 데이터를 집어넣었고 select 를 하는게 보이는데, size 는 0 이뜨고 근데 또 테스트는 성공하네요.. @BeforeEach도 결국은 한 트랜잭션안에서 동작하여 기존의 테스트 코드처럼 내부에서 Comment를 insert 하는 것과 동일한 작업인것인지.. 근데 또 테스트는 어떻게 성공한건지... 어디가 잘못된걸까요? 또 만약,, 제가 이상하게 이해한 부분이 있는 것 같다면 알려주시면 너무 감사하겠습니다!!
-
해결됨스프링 핵심 원리 - 기본편
이번 강의가 아닌 앞으로의 개발에 관해 문의 드립니다.
안녕하세요 강의 정말 잘 보고 있습니다. 다름이 아니고 아직 강의를 다 보지는 못했지만 강의 완료 후 추후 어떻게 공부 혹은 새로운 지식을 습득해야할지에 대해 궁금해 글올립니다. Spring강의를 통해 Spring을 알게되어 좋은 한편 강의를 다 듣고 추후 새로운 버전의 Spring이 혹은 그 Spring을 뛰어넘는 새로운 프레임워크나 툴들이 나왔을때 어떻게 정보를 알고 공부를 해야할지 궁금해서요 언제까지나 강의가 나오기만을 기다릴수는 없는거고 매뉴얼은 중간중간 찾아볼수는 있으나 기초부터 매뉴얼만 보고 공부하는건 무리인듯 싶어서요 몇가지 질문을 요약드리자면.. 1. Spring에 대해 처음 접하실때 혹은 다른 새로운 기술들을 접하실때 어떻게 공부하시는지 궁금합니다.(원서?, 국내도서?, 매뉴얼?) 2. 혹시 개발동향이나 최신 정보를 얻기위해 주로 가시는 웹사이트가 있다면 추천해 주실수 있으실까요? 아직 마지막영상까지 보지를 않고 질문을 드려 남은 영상에서 답변을 주실수도 있을텐데 너무 궁금한 마음에 문의드립니다 아, 그리고 HTTP 관련 강의 먼저 올려주신다고 하셨는데 기대하고 있습니다 감사합니다!!
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
질문있습니다.
안녕하세요 영한님. 강의를 참고하여 프로젝트를 진행 했는데 문제가 발생해서 질문드립니다. 관리자(admin)가 item 테이블의 데이터 하나를 삭제하려고 할 때 해당 item을 주문한 orderItem이 존재하여 외래키 제약 조건 위반이 발생하여 삭제를 하지 못하는 경우,(제가 의도한 설계는 아닙니다) 어떤 식으로 해결 해나가야 할지 감이 잘 잡히지 않네요. JPA에 외래키 제약 조건이 발생하더라도 강제로 삭제를 진행하는 옵션이 있다면 해당 옵션을 걸어줘야 하는지, 아니면 애초에 설계를 orderItem이 있다면 해당 item은 삭제가 안되게 설계를 해야하는건지 영한님이라면 어떻게 해결하실지 궁금합니다..ㅠㅠ
-
해결됨스프링 프레임워크 핵심 기술
컨테이너에 들어가는 있는 빈은?
언제나 좋은 강의 감사합니다 기선님! 13분 부터의 설명을 잘 이해하지 못해서 ㅠㅠ 이렇게 질문을 남깁니다. Spring AOP 의 경우 클래스를 빈으로 등록할때, AOP를 적용시킨 Proxy bean이 등록된다고 이해하면 되는걸까요? 궁금한점은, AOP 가 적용되지 않은 A 클래스도 Bean 으로 컨테이너에 들어가고 AOP를 적용한 proxy Bean도 컨테이너에 들어가게 되나요? 중복적인 부분이라 불필요한 리소스 낭비가 일어날거같은데 proxy Bean만 컨테이너에 들어가게 되는게 맞을까요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
cascade 관련 질문입니다!
안녕하세요 김영한 강사님! 먼저 좋은 강의 만들어주셔서 감사합니다! 강의를 듣다가 cascade 관련하여 질문이 생겨서 질문 작성을 하게 되었습니다. 먼저 밑에 분이 먼저 해주신 질문과 강사님의 답변을 보고 cascade 옵션 자체는 연관관계 주인, 양방향등 관계 없이 1. 동일한 라이프 사이클, 2. 참조하는 주인이 private owner 일 때 라고 2가지 조건을 충족할 때 쓴다고 이해하게 되었는데, 그럼 order, orderItem, delivery에서 orderItem과 delivery가 각각 order만 참조하는, 다른 것이 참조할 수 없는 private owner인 건가요? private owner 라는 말에 대한 이해가 정확하게 되지 않아서 질문을 드립니다. 제가 이해한 것이 맞는 건가요? 감사합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
도메인 모델 패턴식의 코딩관련 질문
안녕하세요 영한님~, 궁금한 것이 있습니다.영한님이 말씀하신 것처럼 아직은 도메인 모델 패턴이 생소하더군요. (실무에선 트랜잭션 스크립트 방식의 프로젝트들만 접해봐서요) [도움 받고 싶은 것] ddd가 어떤 식으로 구성되고, 어떻게 메시지를 주고 받는구나 하고 이해할 수 있는 샘플 프로젝트 알고 계신게 있을까요? 저는 깃허브에서 java ddd sample 검색해서 프로젝트들 다운받아서 기웃기웃 하고 있긴 한데, 아무래도 영한님이 ddd는 제가 아는 사람들 중에선 제일 잘 아는 것 같아서 여쭤봐요. 아니면 ddd 강좌나 책도 괜찮은거 추천 주시면 감사하겠습니다! ps] 실무에서 사이드성 프로젝트로(작은 서비스) 영한님 강좌에서 한 것처럼 도메인에 좀 더 많은 로직을 넣는걸로 시작을 했는데 점점 이게 커지면서, 어느순간 이 역할을 서비스 계층에 넣는게 맞나, 아니면 도메인이 처리를 하게끔 하는게 맞나 조금, 고민이 되는 순간이 오더라고요 엉엉. 그래도 영한님 강좌 덕분에 테스트 케이스도 많이 작성하면서 코딩하고, 재밌게 실무 하고 있습니다 :)
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
커맨드와 쿼리 분리
MemberService의 update 메서드에서 Member를 그대로 반환하지 않는 이유가 커맨드와 쿼리를 분리하기 위해서라고 하셨는데 정확히 이해가 가지 않습니다 ㅠ 1. Member를 update 메서드에서 그대로 반환하면 왜 영속상태가 끊킨 Member가 반환이 되나요? 2.Member를 그대로 반환하면 updateMemberV2 메서드에서 Member member = memberService.update(id, request.getName());return new UpdateMemberResponse(member.getId(), member.getName()); 이런식으로 되면 오히려 강의에서 수정한 Member를 찾는 Select 쿼리 안날라가서 커맨드와 쿼리를 분리할 필요가 없는게 아닌가요..? * 여담으로 스프링 MVC 강의 11월에 출시된다고해서 기다리고있었는데 12월로 미뤄졌네요ㅠㅠ 빨리 듣고싶어요~
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
안녕하세요 영한님 질문있습니다.
안녕하세요 영한님. 바보같은 질문일 수 있는데, 상품주문() 단위테스트 작성하실 때 em.persist(member); em.persist(item); 엔티티를 영속성 컨텍스트에 저장, 을 해주는게 이득이라고 하셨는데, 어떤 이득이 있나요?? 1] 해당 코드 없어도 단위테스트는 통과해서요. 2] flush() 하는건 insert 쿼리문을 눈으로 할 수 있으니, 유용하겠구나 생각이 들었는데, persist()는 잘 와 닿질 않아서요 :)
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
id값이 갑자기 이상하게 되는 현상
강사님 강의를 보면서 h2 db로 똑같이 진행중이었는데요, id값이 1,2,3,4 이런식으로 잘 들어가다가 갑자기 33이 되어버렸습니다. 마침 밑 질문에도 저와 같이 33이 되신분이 있길래 답변을 봤는데 "자동 생성이 33부터 들어가는 것은 아마 이전에 값을 넣었다가 지웠다가 해서 그럴꺼에요^^" 라고 답변을 주셨더라고요 근데 저는 이전에 값을 넣었다가 지운적이 없습니다. 그래서 33이 왜나왔지 하고 33을 지웠더니 갑자기 이번엔 65가 나와버리네요 데이터를 다 지워도 이 id값은 안내려가는데 id값을 다시 1로 바꾸는 방법이 있을까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
H2 실행 관련 질문 드립니다 ^^
안녕하세요 김영한 선생님. 스프링 관련하여 좋은강의 정말 잘듣고 있습니다 ^^; 수업을 열심히 따라가던 도중 H2 실행과 관련하여 아래와 같은 에러 내용이 발생하여,아래와 관련한 에러가 발생하였으나, 끝내 배치파일로 실행을 하지 못하고 h2.bat 실행시 Error: Could not find or load main class org.h2.tools.Console 조치방법 1. JDK 8 / JavaSE 11 버전을 모두 삭제한 후 openJDK 11 로 설치2. 시스템 환경변수 재설정 - JAVA_HOME : C:\jdk11\openjdk-11+28_windows-x64_bin - H2_HOME : C:\dev_h2_db\h2 - CLASSPATH : .;%JAVA_HOME%\lib - path 추가 %JAVA_HOME%\bin %H2_HOME%\bin 이렇게 조치하였으나, 실행이 되지 않아 열심히 찾던 도중 h2 공식 문서에 cmd 에서 h2\bin 폴더에 접근 후 java -jar h2-1.4.200.jar로 실행하는 방법이 있다고 하여 겨우 구동시킬수 있었습니다.일단 파일에는 문제가 없다는 것인데, 제가 시스템 변수를 어떻게 수정을 해야 배치파일로 실행이 가능할까요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
필드 주입(DI)
우선 좋은 강의 만들어 주셔서 감사합니다. 현재 취준생의 입장에서 정말 많은 도움이 되고 있습니다! DI의 3가지 방법 중 필드 주입 설명 부분에서 MemberService 를 바꿀 수 있는 방법이 없는 것이 단점으로 이해했습니다. 하지만 제 생각에는 필드 주입 시 final을 사용할 수 없어(스프링 컨테이너가 객체를 주입하므로) 바뀔 가능성이 있고, 생성자 주입에서는 final로 선언 시 생성자가 호출된 이후에는 MemberService를 바꿀 수 없게 될 것으로 생각이 됩니다. 제가 어떤 부분을 잘못 이해하고 있는지 궁금합니다. 감사합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Entity의 Embedded타입 쿼리 질문드립니다!
안녕하세요 김영한선생님! 좋은 강의 잘 듣고 있습니다. 우선 강의는 완강하였고 다음 강의도 수강 예정입니다^^ 그전에 몇가지만 질문 드려요! 1. 현재 Member Entity에 Embedded타입으로 Email을 넣었습니다. @Embeddable class Email{ private String eHead; // '@'전까지 private String eBody; // 첫 '.'전까지 private String eTail; // 나머지 } 이때 email을 통해 멤버를 찾는 쿼리를 EntityManager를 통해 생성하려고 하는데요! 이메일을 통해 멤버를 찾는 쿼리는 어떻게 생성해야 할까요?? 단순히 public List<Member> findByEmail(Email email){ return entityManager.createQuery("select m from Member m where m.email =: email", Member.class) .setParameter("email", email) .getResultList();} 이런 방식으로는 같은 이메일임을 쿼리가 못 안다고 생각합니다 ㅠㅠ 그렇다고 email의 각 필드를 get해서 and로 처리하는 방법은 뭔가 비효율적인 것 같습니다! 더 좋은 방법이 있을까요? 2. 보통 실무에서 멤버의 썸네일과 같은 이미지 데이터는 어떻게 관리하나요?? 이또한 벡엔드 서버에 넣나요? 아니면 프런트엔드 서버에 따로 관리하나요?? 강의와는 좀 무관하지만 간략하게 답변해주시면 너무너무 감사하겠습니다!!
-
미해결스프링 핵심 원리 - 기본편
개발부터 배포 프로세스
안녕하세요, 좋은 강의 만들어주셔서 감사합니다. 현업에서는 개발, 배포 프로세스가 어떻게 진행되는지 궁금합니다 제가 지금까진 spring mvc쪽 만 해봤는데요, 뷰까지 통합해서 띄우기 때문에 하나의 프로젝트에서 모두 개발되었습니다. 하지만 요즘은 보통 프론트엔드 vue,react 백엔드은 spring으로 개발을 진행되자나요? 이렇게 개발될때 어떻게 진행되는지 전체적으로 궁금합니다. 1. 프론트쪽에서 빌드한뒤에 spring boot에 static쪽에 넣고 배포하나요? 2. 그리고 만약 프론트서버, 백엔드서버 따로 구축되어있으면 백엔드쪽 api를 호출하려면 프론트쪽에서 백엔드 ip를 알아야 api호출이 가능하자나요, 그럼 프론트쪽에 api ip가 다 공개되는건가요...? 보안상으로 안좋지않나요..? 백엔드하시는분인데 프론트쪽도 함께 질문하는게 아이러니합니다만 현업에서 어떻게 개발부터 배포까지 진행되는지 궁금하네요ㅜ 감사합니다.
-
해결됨스프링 기반 REST API 개발
한글깨짐현상
응답시에, defaultMessage를 한글로 줬는데, 깨지는 경우에는 어떻게 해결할 수 있을까요???
-
해결됨스프링 핵심 원리 - 기본편
질문 있습니다~!
안녕하세요. 영한님, 항상 좋은 강의 감사드립니다 :) 수업을 듣다가 몇가지 궁금한 점이 생겨 질문 드립니다. 1. 스프링 애플리케이션을 실행하면 스프링 컨테이너가 생성되고 bean이 생성될텐데, 스프링 컨테이너랑 bean은 모두 JVM의 heap 영역에 생성되는 건가요?? 2. heap 영역에 생성된다면, GC의 대상이 될 수도 있는건가요??
-
미해결스프링 핵심 원리 - 기본편
변수 만드는 단축키 뭐였나요??
안녕하세요 강의 너무 잘보고 있습니다 너무 짱짱이에요 제가 궁굼한건 new Member(,,,); 을 쓰고 어떤 단축키를 누르니 Member member = new Member(...); 로 만들어주는 단축키가 궁굼합니다 앞에 강의에서 설명해주셨던거 같은데 못찾겠네요 ㅠㅠ
-
미해결스프링 핵심 원리 - 기본편
orderServiceImpl에서 repository와 service
안녕하세요 강사님 강의 잘 보고 있습니다. 다름이 아니라 OrderServiceImpl에서 MemberRepository가 아닌 MemberServiceImpl을 써도 같은 결과가 나올 텐데요 왜 repository를 쓰셨는지 궁금합니다! 😊 단지 많은 접근으로 인한 메모리 낭비 문제인가요? 아니면 다른 이유가 있을까요??
-
해결됨스프링 기반 REST API 개발
무제한 경매
spring 에 관련한 질문은 아니지만.. 그냥 계속 궁금증이 맴돌아서 여쭤보겠습니다. 무제한 경매를 가정한 상황에서 basePrice 가 maxPrice 보다 크고 maxPrice가 0인 상황이 어떤 상황인가요..? 이벤트를 최초로 등록하는, (이벤트를 경매에 올리는) 상황을 의미하는 건가요??
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
순수 JDBC 에서 코드 입력후 실행시 에러
안녕하세요 선생님! 강의 정말 잘 듣고 있습니다. 강의 내용, 자료들 정말 좋은거 같아요 :) h2 데이터베이스 설치까지 잘 마치고, 메모리에서 JDBC로 바꾸는 과정에서 코드들 따라서 입력하고 run 하는데 아래같은 에러가 뜨네요. 비슷한 질문이 있었는데.. Cannot load driver class: org.h2.Driver 라는 부분이 있어서.. build.gradle 확인해서 runtimeOnly 'com.h2database:h2' 부분이 추가됐는지 확인했습니다. ========================================================== Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2020-11-23 22:07:11.756 ERROR 10184 --- [ main] o.s.boot.SpringApplication : Application run failed org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'springConfig' defined in file [C:\study\hello-spring\out\production\classes\hello\hellospring\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:797) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE] at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:227) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1356) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1203) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:556) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:516) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:324) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE] at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:897) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:879) ~[spring-context-5.2.10.RELEASE.jar:5.2.10.RELEASE] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:551) ~[spring-context-5.2.10.RELEASE.jar:5.2.10.RELEASE] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:143) ~[spring-boot-2.3.5.RELEASE.jar:2.3.5.RELEASE] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:758) ~[spring-boot-2.3.5.RELEASE.jar:2.3.5.RELEASE] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:750) ~[spring-boot-2.3.5.RELEASE.jar:2.3.5.RELEASE] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:405) ~[spring-boot-2.3.5.RELEASE.jar:2.3.5.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) ~[spring-boot-2.3.5.RELEASE.jar:2.3.5.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1237) ~[spring-boot-2.3.5.RELEASE.jar:2.3.5.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) ~[spring-boot-2.3.5.RELEASE.jar:2.3.5.RELEASE] at hello.hellospring.HelloSpringApplication.main(HelloSpringApplication.java:10) ~[classes/:na] 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:655) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE] at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:635) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1336) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1176) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:556) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:516) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:324) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE] at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE] at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1307) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE] at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1227) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE] at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:884) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE] at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:788) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE] ... 20 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.2.10.RELEASE.jar:5.2.10.RELEASE] at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:650) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE] ... 34 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.2.10.RELEASE.jar:5.2.10.RELEASE] at org.springframework.boot.autoconfigure.jdbc.DataSourceProperties.determineDriverClassName(DataSourceProperties.java:223) ~[spring-boot-autoconfigure-2.3.5.RELEASE.jar:2.3.5.RELEASE] at org.springframework.boot.autoconfigure.jdbc.DataSourceProperties.initializeDataSourceBuilder(DataSourceProperties.java:175) ~[spring-boot-autoconfigure-2.3.5.RELEASE.jar:2.3.5.RELEASE] at org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration.createDataSource(DataSourceConfiguration.java:43) ~[spring-boot-autoconfigure-2.3.5.RELEASE.jar:2.3.5.RELEASE] at org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration$Hikari.dataSource(DataSourceConfiguration.java:85) ~[spring-boot-autoconfigure-2.3.5.RELEASE.jar:2.3.5.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.2.10.RELEASE.jar:5.2.10.RELEASE] ... 35 common frames omitted Process finished with exit code 1
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Wrong user name or password ?
안녕하세요. 테스트 코드 작성시 아래와 같은 코드 오류가 나서 문의 드립니다. user & password 는 지정한 부분이 없습니다. 확인해할 부분이 있을까요? org.h2.jdbc.JdbcSQLInvalidAuthorizationSpecException: Wrong user name or password [28000-200] at org.h2.message.DbException.getJdbcSQLException(DbException.java:461) ~[h2-1.4.200.jar:1.4.200] at org.h2.engine.SessionRemote.done(SessionRemote.java:611) ~[h2-1.4.200.jar:1.4.200] at org.h2.engine.SessionRemote.initTransfer(SessionRemote.java:147) ~[h2-1.4.200.jar:1.4.200] at org.h2.engine.SessionRemote.connectServer(SessionRemote.java:435) ~[h2-1.4.200.jar:1.4.200] at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:321) ~[h2-1.4.200.jar:1.4.200]