묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 DB 1편 - 데이터 접근 핵심 원리
txTemplate.executeWithoutResult 의 Exception
txTemplate.executeWithoutResult((status) -> { bizLogic(fromId, toId, money); });위처럼 try~catch를 사용안해도 잘 돌아가는데 버전이 올라가면서 내부적으로 Exception 처리해줘서 그런건가요?[version]org.springframework.boot: 2.7.12spring-tx: 5.3.27
-
해결됨스프링 프레임워크는 내 손에 [스프1탄]
jquery 버전차이로 이미지가 안보일수도 있나요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 이미지 경로도 정확한데도 불구하고 이미지가 뜨지않아서깃에 올려두신 코드의 상단부분만 복사 붙여넣기하여 이미지가 뜨게 바꿨는데제 기존 코드와 비교해보니 jquery의 버전이 다르더라구요단순히 버전차이일까요?
-
해결됨토비의 스프링 부트 - 이해와 원리
intellij CE 버전 run configurations 질문있습니다
토비님 안녕하세요. intellij CE 버전에서 spring initializr 로 생성한 프로젝트 실행 시 궁금한게 있습니다. ultimate 버전은 영상에서처럼 run 할 때 우상단에 spring 아이콘이 있고 springboot 플러그인이 적용되어있는데, CE 버전은 그렇지 않고 따로 Run Configurations 가 설정되어있지 않아 아주 동일한 방법으로 실행할 수는 없었습니다. (영상의 "HellobootApplication" 대신 "Current File"로 표시되어있고 실행버튼이 비활성화 되어있습니다.) 일단 main 메소드가 있는 Application.java 파일에서 코드 왼쪽의 실행버튼으로 실행했는데 이렇게 해도 상관 없는건가요? Ultimate 버전과 달리 CE 버전에서 놓치고 가는게 있는지 궁금해서 여쭙니다. 좋은 강의 해주셔서 감사합니다 ~
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
첫 프로그램 설정
강사님이랑 똑같이 다 설정했는데 왜 이렇게 뜰까요 ?
-
미해결스프링 부트 웹 개발 입문 - 따라하며 배우기
@Transactional 애너테이션을 적용해도 매번 session을 맺어서 처리하는 이유
@Transactional(rollbackFor = Exception.class) public int testTran(DatasetList dsList) { Dataset dsParam = DatasetUtil.getGdsParam(dsList); // Dataset을 SQL에 적용할 변수형인 Map으로 변환하면서 사용자 정보 입력 Map mapParam = DatasetUtil.getMap(dsParam, DatasetUtil.UPPER_CASE); int iRes1 = codemap.updateTran1(mapParam); log.info("==================== ||||||22222222222222||||||| ===================="); int iRes2 = codemap.updateTran2(mapParam); //미존재테이블로 에러 발생 log.info("==================== |||||||3333333333333|||||| ===================="); return iRes2; }[2023-06-28 16:07:47:67472] [http-nio-8808-exec-3] DEBUG o.s.web.servlet.DispatcherServlet - POST "/web/common/CodeAction?mode=testTran", parameters={masked}[2023-06-28 16:07:47:67473] [http-nio-8808-exec-3] DEBUG o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped to com.skcc.nxcus_spring.usrcode.action.codecontroller#testTran(HttpServletRequest, HttpServletResponse)[2023-06-28 16:07:47:67473] [http-nio-8808-exec-3] DEBUG org.mybatis.spring.SqlSessionUtils - Creating a new SqlSession[2023-06-28 16:07:47:67473] [http-nio-8808-exec-3] DEBUG org.mybatis.spring.SqlSessionUtils - SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@628385f5] was not registered for synchronization because synchronization is not active[2023-06-28 16:07:47:67473] [http-nio-8808-exec-3] DEBUG o.s.jdbc.datasource.DataSourceUtils - Fetching JDBC Connection from DataSource[2023-06-28 16:07:47:67474] [http-nio-8808-exec-3] DEBUG o.m.s.t.SpringManagedTransaction - JDBC Connection [HikariProxyConnection@1752952453 wrapping net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@4499b10a] will not be managed by Spring[2023-06-28 16:07:47:67474] [http-nio-8808-exec-3] DEBUG c.s.n.m.nxmdb.CodeMapper.updateTran1 - ==> Preparing: UPDATE COM_COMMON_COD SET COMM_NM = 'Transactional111' WHERE COMM_GRP_CD = 'MEMSTS' AND COMM_CD = 'A'[2023-06-28 16:07:47:67474] [http-nio-8808-exec-3] DEBUG c.s.n.m.nxmdb.CodeMapper.updateTran1 - ==> Parameters: [2023-06-28 16:07:47:67477] [http-nio-8808-exec-3] DEBUG jdbc.sqltiming - com.zaxxer.hikari.pool.ProxyPreparedStatement.execute(ProxyPreparedStatement.java:44)1. UPDATE COM_COMMON_COD SET COMM_NM = 'Transactional111' WHERE COMM_GRP_CD = 'MEMSTS' AND COMM_CD = 'A' {executed in 3 msec}[2023-06-28 16:07:47:67477] [http-nio-8808-exec-3] DEBUG c.s.n.m.nxmdb.CodeMapper.updateTran1 - <== Updates: 1[2023-06-28 16:07:47:67477] [http-nio-8808-exec-3] DEBUG org.mybatis.spring.SqlSessionUtils - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@628385f5][2023-06-28 16:07:47:67477] [http-nio-8808-exec-3] INFO c.s.n.usrcode.biz.codeservice - ==================== ||||||22222222222222||||||| ====================[2023-06-28 16:07:47:67477] [http-nio-8808-exec-3] DEBUG org.mybatis.spring.SqlSessionUtils - Creating a new SqlSession[2023-06-28 16:07:47:67477] [http-nio-8808-exec-3] DEBUG org.mybatis.spring.SqlSessionUtils - SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@532be999] was not registered for synchronization because synchronization is not active[2023-06-28 16:07:47:67477] [http-nio-8808-exec-3] DEBUG o.s.jdbc.datasource.DataSourceUtils - Fetching JDBC Connection from DataSource[2023-06-28 16:07:47:67477] [http-nio-8808-exec-3] DEBUG o.m.s.t.SpringManagedTransaction - JDBC Connection [HikariProxyConnection@471746278 wrapping net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@4499b10a] will not be managed by Spring[2023-06-28 16:07:47:67477] [http-nio-8808-exec-3] DEBUG c.s.n.m.nxmdb.CodeMapper.updateTran2 - ==> Preparing: UPDATE COM_COMMON_COD SET COMM_NM = 'Transactional2222' WHERE COMM_GRP_CD = 'MEMSTS' AND COMM_CD = 'D'[2023-06-28 16:07:47:67477] [http-nio-8808-exec-3] DEBUG c.s.n.m.nxmdb.CodeMapper.updateTran2 - ==> Parameters: [2023-06-28 16:07:47:67478] [http-nio-8808-exec-3] DEBUG jdbc.sqltiming - com.zaxxer.hikari.pool.ProxyPreparedStatement.execute(ProxyPreparedStatement.java:44)1. UPDATE COM_COMMON_COD SET COMM_NM = 'Transactional2222' WHERE COMM_GRP_CD = 'MEMSTS' AND COMM_CD = 'D' {executed in 1 msec}[2023-06-28 16:07:47:67478] [http-nio-8808-exec-3] DEBUG c.s.n.m.nxmdb.CodeMapper.updateTran2 - <== Updates: 1[2023-06-28 16:07:47:67478] [http-nio-8808-exec-3] DEBUG org.mybatis.spring.SqlSessionUtils - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@532be999][2023-06-28 16:07:47:67478] [http-nio-8808-exec-3] INFO c.s.n.usrcode.biz.codeservice - ==================== |||||||3333333333333|||||| ====================[2023-06-28 16:07:47:67478] [http-nio-8808-exec-3] DEBUG o.s.web.servlet.DispatcherServlet - Completed 200 OK @Transactional 애너테이션을 적용해도 각각의 sql 마다 매번 session을 맺어서 처리하는데요. 이유를 잘 모르겠습니다. 설정문제일까요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
IntelliJ, Marketplace에 Lombok이 없어 당황하신 분들에게.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]IntelliJ 2020.03 이후 버전에서는 기본 Plugin으로 Lombok이 설치되어 있습니다!확인해 보고 싶으신 분들은 Plugins의 '설치됨' 클릭
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
이해가 잘 안돼서 여쭤봅니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]url에 root주소/test를 입력하면 컨트롤러에서 /test에 해당하는 함수를 찾아가서 스프링부트가 모델을 생성하고 return으로 템플릿에 있는 test를 찾는다. ⇒이게 맞는건가요? 이건 점프투스프링에 있던건데 왜 인자로 model이 안 들어간걸까요?바로 문자열 리턴하기 때문인가요?바로 저 문자열을 리턴하는 이유는 기본적으로 템플릿 폴더에서 resources:templates/+{ViewName}+’.html’으로 매핑 한다는데 해당 템플릿 파일이 없기 때문인가요?model을 왜 써야 하는건가요?
-
미해결스프링 부트 - 핵심 원리와 활용
윈도우 사용자분들 cmd에서 톰캣 오류 혹은 빌드 오류 날때..
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 아니오[질문 내용]질문은 아니고 혹시 저와 같은 상황이 있을 것 같은 분들을 위해 몇 글자 적어보자면윈도우 cmd에서 빌드할 때 gradlew build 나 톰캣 catalina run 이런 명령어가 Unrecognized option: ~~ 이런식으로 나온다면 그냥 윈도우 powershell을 사용하는 걸 추천드립니다..Unrecognized option: -djava.util.logging.config.fileorUnrecognized option: -xmx64m등등..이상하게 cmd에선 대문자 옵션이 소문자로 바뀌어서 인수로 인식을 못하더라구여ㅠ.. 결론 ! => powershell 쓰면 해결가능합니다!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
out 폴더 삭제 후 error page
홈화면과 레이아웃 강의에서 css적용이 안되길래 방법을 찾아보다가 out폴더 삭제 후 reload disk를 하면된다는 글을 보고 out폴더를 삭제했는데 아예 error page가 뜹니다ㅜㅜ 원래는 css적용만 안되는 오류였는데 아예 실행이 안되네요..out폴더를 되돌릴 수가 없어서 방법이 있을까요??
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Repository 인터페이스를 설계할 때 메소드 이름을 spring data jpa를 고려해서 해야 하나요?
스프링 데이터 JPA를 대비해서 메소드 이름을 그에 맞게 정해두셨다고 하셨는데요. 실무에서 스프링 데이터 JPA 말고 다른 기술을 결정했을 때도 메소드 이름을 그렇게 설계하는지 궁금합니다.예를 들어서 mybatis를 사용해서 프로젝트를 진행한다고 결정했을 때 먼저 Repository 인터페이스를 설계 할텐데 인터페이스 메소드 이름을 스프링 데이터 JPA 형식에 맞지 않게 정했다면 나중에 스프링 데이터 JPA로 변경하기 곤란할 것 같습니다.실무에서 스프링 데이터 JPA 말고 다른 기술을 사용하기로 결정했을 때도 이후에 스프링 데이터 JPA로 변경될 가능성을 고려해서 스프링 데이터 JPA의 Repository 메소드 이름 형식을 사용하나요?만약 스프링 데이터 JPA 메소드 이름 형식을 사용하지 않는다면 어떻게 해결하는지도 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
MemberRepository 가 Member 객체를 어떻게 사용하나요?
제목 그대로 MemberRepository 랑 Member가 어떻게 연결이 되는건가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
연관관계 관련 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]1. 안녕하세요!! 수업을 들으면서 생긴 궁금증인데 Member랑 Orders가 1:N 관계로 양방향으로 매핑이 되어 있자나요. 그럼 Members 객체를 호출해서 SQL문을 날리면 Orders List관련 SQL문은 따로 안날리고 나중에 Orders에 접근할때 SQL을 날리는 방식이 지연 로딩 방식인건가요?? 연관된 객체 탐색이 쉽다는 이유로 연관 매핑을 막 사용하면 안되고 진짜 필요할 때만 사용하라는 말이 있더라고요. 조회 기능 같은 경우에는 (CQRS) 별도 모델을 만들어서 구현하라는 말을 들었는데, 이번 강의처럼 모든 테이블 사이에 연관관계를 매핑 해줘도 되는건가요??
-
미해결실전! 스프링 데이터 JPA
쿼리 힌트 Page 추가 예제 관련 질문입니다/
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? [질문 내용]안녕하세요. 강의와 자료를 병행해서 보다가 질문이 있어 문의드립니다. 우선적으로https://www.inflearn.com/course/lecture?courseSlug=%EC%8A%A4%ED%94%84%EB%A7%81-%EB%8D%B0%EC%9D%B4%ED%84%B0-JPA-%EC%8B%A4%EC%A0%84&unitId=28020&tab=community&category=questionDetail&q=723744해당 내용을 읽어보았는데도 이해가 되질 않아 문의드리게 된 점 양해부탁드립니다 ㅜ해당 내용처럼 저도 application.yml 내 use_sql_comments: true 를 추가쿼리문을 확인하였을 때forCounting=false /* select count(m) from Member m where m.username = :username */ select count(member0_.id) as col_0_0_ from member member0_ where member0_.username='member1'; forCounting=true /* memberRepository.findByUsername */ select count(member0_.id) as col_0_0_ from member member0_ where member0_.username='member1';위와 같은 결과를 반환받았는데 어떤 차이가 있는지 잘모르겠습니다 ㅜ 어떤 의도를 말씀하시는지 잘모르겠습니다 ㅜ
-
미해결3. 웹개발 코스 [Enterprise Architecture(EA) X 전자정부프레임워크]
제14강#1 게시판 페이징처리 - 10:44초 ~ 10:57초 에러..
제14강#1 게시판 페이징처리 - 10:44초 ~ 10:57초 에러..--http://localhost:6345/Egov_WEB/login.do-- user12 / user12로 로그인한 후,http://localhost:6345/Egov_WEB/loginSubmission.do-- 정상적으로 출력 후http://localhost:6345/Egov_WEB/boardList.do를 요청하면, serviceImpl까지 가서, 실행되는 중에(int listCount = Integer.parseInt(paramMap.get("out_listcount").toString());)을 실행한 후, 디버깅모드 f5로 다 돌고 나온 후, controller try catch문에 exception e가 잡히네요...어떻게 해결해야할까요??
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
orderItem이 casecade가 안걸려있다고 생각하고 질문 드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]casecade로 persist를 한번에 진행하는데이제 각자 등록해야 된다면(cascade이 애매하게 느껴진다면)public void save(Order order){ em.persist(order.getOrderItem()) em.persist(order.getDelivery()) em.persist(order.getMember()) em.persist(order);이런식으로 persist를 진행하면 되는걸까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
프로젝트 생성
이렇게 되어있는데 지금은 어떤 스프링부트를 선택해야하며 패키징하고 자바는 어떤걸 선택해야 하나요???
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
DB 연동
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예[질문 내용]여기에 질문 내용을 남겨주세요./Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home/bin/java -ea -Didea.test.cyclic.buffer.size=1048576 -javaagent:/Applications/IntelliJ IDEA CE.app/Contents/lib/idea_rt.jar=60083:/Applications/IntelliJ IDEA CE.app/Contents/bin -Dfile.encoding=UTF-8 -classpath /Users/anshinyoung/.m2/repository/org/junit/platform/junit-platform-launcher/1.9.3/junit-platform-launcher-1.9.3.jar:/Users/anshinyoung/.m2/repository/org/junit/platform/junit-platform-engine/1.9.3/junit-platform-engine-1.9.3.jar:/Users/anshinyoung/.m2/repository/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar:/Users/anshinyoung/.m2/repository/org/junit/platform/junit-platform-commons/1.9.3/junit-platform-commons-1.9.3.jar:/Users/anshinyoung/.m2/repository/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar:/Applications/IntelliJ IDEA CE.app/Contents/lib/idea_rt.jar:/Applications/IntelliJ IDEA CE.app/Contents/plugins/junit/lib/junit5-rt.jar:/Applications/IntelliJ IDEA CE.app/Contents/plugins/junit/lib/junit-rt.jar:/Users/anshinyoung/study/hello-spring/out/test/classes:/Users/anshinyoung/study/hello-spring/out/production/classes:/Users/anshinyoung/study/hello-spring/out/production/resources:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-starter-thymeleaf/3.0.8/efd3c82f81571dae1ca77ead5980571e29f351e1/spring-boot-starter-thymeleaf-3.0.8.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-starter-web/3.0.8/e409cbbbd966fe1cf3912c15dd68701e0de28967/spring-boot-starter-web-3.0.8.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-starter-jdbc/3.0.8/d2b5368d2e7b7d2952144f1507e67822889b8adf/spring-boot-starter-jdbc-3.0.8.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-starter-test/3.0.8/b024f428e48d472d9d7bbeb02e6fb11b531f7437/spring-boot-starter-test-3.0.8.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-starter/3.0.8/7bee4f12a569e53ddb66814929bb1c906daf9ab3/spring-boot-starter-3.0.8.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.thymeleaf/thymeleaf-spring6/3.1.1.RELEASE/deb52ef921a4ac5132fedb7ebfc2bc1dad4382b3/thymeleaf-spring6-3.1.1.RELEASE.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-starter-json/3.0.8/83468643e2a4f5578d2261781e339d38cecfcfa7/spring-boot-starter-json-3.0.8.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-starter-tomcat/3.0.8/bc5232341b34667da73e0f96889109bada8ed17f/spring-boot-starter-tomcat-3.0.8.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.springframework/spring-webmvc/6.0.10/af3f040747f4bfbcdb96140f8c9d252d3a6a4ef1/spring-webmvc-6.0.10.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.springframework/spring-web/6.0.10/e61defa7908bf7a499f000dab8ef7691c2aa75c1/spring-web-6.0.10.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/com.zaxxer/HikariCP/5.0.1/a74c7f0a37046846e88d54f7cb6ea6d565c65f9c/HikariCP-5.0.1.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.springframework/spring-jdbc/6.0.10/5179c98c5eba511cdd31852d1f74063aa17bf3da/spring-jdbc-6.0.10.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-test-autoconfigure/3.0.8/9e805d95c802d8db8ac0ea298651aa7d906e040b/spring-boot-test-autoconfigure-3.0.8.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-test/3.0.8/31e2dfece627794ef8f8ac51941ca05e87a331e6/spring-boot-test-3.0.8.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/com.jayway.jsonpath/json-path/2.7.0/f9d7d9659f2694e61142046ff8a216c047f263e8/json-path-2.7.0.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/jakarta.xml.bind/jakarta.xml.bind-api/4.0.0/bbb399208d288b15ec101fa4fcfc4bd77cedc97a/jakarta.xml.bind-api-4.0.0.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.assertj/assertj-core/3.23.1/d2bb60570f5b3d7ffa8f8000118c9c07b86eca93/assertj-core-3.23.1.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest/2.2/1820c0968dba3a11a1b30669bb1f01978a91dedc/hamcrest-2.2.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.junit.jupiter/junit-jupiter/5.9.3/72e840501e1550e9799c9a5cc9483d7d6b29e0ba/junit-jupiter-5.9.3.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.mockito/mockito-junit-jupiter/4.8.1/e393aa62eca2244a535b03842843f2f199343d1f/mockito-junit-jupiter-4.8.1.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.mockito/mockito-core/4.8.1/d8eb9dec8747d08645347bb8c69088ac83197975/mockito-core-4.8.1.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.skyscreamer/jsonassert/1.5.1/6d842d0faf4cf6725c509a5e5347d319ee0431c3/jsonassert-1.5.1.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.springframework/spring-test/6.0.10/8773ebcd0e6822e2e5a816752cbe2419d7b1b4b4/spring-test-6.0.10.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.springframework/spring-core/6.0.10/889aa214b6607763ddeb6bd391d682cd71681b36/spring-core-6.0.10.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.xmlunit/xmlunit-core/2.9.1/e5833662d9a1279a37da3ef6f62a1da29fcd68c4/xmlunit-core-2.9.1.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-autoconfigure/3.0.8/175465e711e214be7d0ae7e14ecff1235617bde7/spring-boot-autoconfigure-3.0.8.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot/3.0.8/9eb8dca474e0194fabb44c2e3c97aba943f5fa68/spring-boot-3.0.8.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-starter-logging/3.0.8/2dd1112cc3c1ee62ab86aceb99dccfda6e82d5dd/spring-boot-starter-logging-3.0.8.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/jakarta.annotation/jakarta.annotation-api/2.1.1/48b9bda22b091b1f48b13af03fe36db3be6e1ae3/jakarta.annotation-api-2.1.1.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.yaml/snakeyaml/1.33/2cd0a87ff7df953f810c344bdf2fe3340b954c69/snakeyaml-1.33.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.thymeleaf/thymeleaf/3.1.1.RELEASE/374a129dfa5e7d7f1a46eacc4d49e594ca0cf26f/thymeleaf-3.1.1.RELEASE.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-api/2.0.7/41eb7184ea9d556f23e18b5cb99cad1f8581fc00/slf4j-api-2.0.7.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.datatype/jackson-datatype-jsr310/2.14.3/35f7f751c3555dadccb6f173f9ac1e035a648da3/jackson-datatype-jsr310-2.14.3.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.module/jackson-module-parameter-names/2.14.3/fa8f81ea27d89cf73539bbc72c6304a30bcab631/jackson-module-parameter-names-2.14.3.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.datatype/jackson-datatype-jdk8/2.14.3/9474ab543a65867461f8326c8fa0494b3efc761/jackson-datatype-jdk8-2.14.3.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-databind/2.14.3/ba0373b04bf0f03b0cd268cd2e5e8444aaaf9208/jackson-databind-2.14.3.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.apache.tomcat.embed/tomcat-embed-websocket/10.1.10/10604119402bcaa8490b638698ad177f8df4c50c/tomcat-embed-websocket-10.1.10.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.apache.tomcat.embed/tomcat-embed-core/10.1.10/7423236b34aa78d6f36592b2aa294d7c8469f219/tomcat-embed-core-10.1.10.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.apache.tomcat.embed/tomcat-embed-el/10.1.10/717033c0417fdc7e794b382c066b7e78f6029268/tomcat-embed-el-10.1.10.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.springframework/spring-context/6.0.10/e2bd59f05c95647a274b7719d419cf8fde6f25a0/spring-context-6.0.10.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.springframework/spring-aop/6.0.10/cc309a306fa759018b107dea9a208c758af0297/spring-aop-6.0.10.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.springframework/spring-beans/6.0.10/8fc0684773cc1598edd810660f57d9e9c8ae6055/spring-beans-6.0.10.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.springframework/spring-expression/6.0.10/bd8c93e473e713fe9150a772487507a8e600d5f1/spring-expression-6.0.10.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/io.micrometer/micrometer-observation/1.10.8/2b7c0b08af98a90373776dff06698196881a0783/micrometer-observation-1.10.8.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.springframework/spring-tx/6.0.10/459698d22aadc881afe425934cca79cc1f6bce91/spring-tx-6.0.10.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/net.minidev/json-smart/2.4.11/cc5888f14a5768f254b97bafe8b9fd29b31e872e/json-smart-2.4.11.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/jakarta.activation/jakarta.activation-api/2.1.2/640c0d5aff45dbff1e1a1bc09673ff3a02b1ba12/jakarta.activation-api-2.1.2.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/net.bytebuddy/byte-buddy/1.12.23/d470526e8c4566c04e9ae5d3ccb62d1a7aa58986/byte-buddy-1.12.23.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.junit.jupiter/junit-jupiter-params/5.9.3/9e2a4bf6016a1975f408a73523392875cff7c26f/junit-jupiter-params-5.9.3.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.junit.jupiter/junit-jupiter-api/5.9.3/815818ad6ffcc8d320d8fbdf3d748c753cf83201/junit-jupiter-api-5.9.3.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/net.bytebuddy/byte-buddy-agent/1.12.23/1cba11fdb72c383edacb909f79ae6870efd275e4/byte-buddy-agent-1.12.23.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/com.vaadin.external.google/android-json/0.0.20131108.vaadin1/fa26d351fe62a6a17f5cda1287c1c6110dec413f/android-json-0.0.20131108.vaadin1.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.springframework/spring-jcl/6.0.10/cba44e98dab40a506c50978a0e5f11ceaa90b3ff/spring-jcl-6.0.10.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/ch.qos.logback/logback-classic/1.4.8/f00ba91d993e4d14301b11968d3cacc3be7ef3e1/logback-classic-1.4.8.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.apache.logging.log4j/log4j-to-slf4j/2.19.0/30f4812e43172ecca5041da2cb6b965cc4777c19/log4j-to-slf4j-2.19.0.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.slf4j/jul-to-slf4j/2.0.7/a48f44aeaa8a5ddc347007298a28173ac1fbbd8b/jul-to-slf4j-2.0.7.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.attoparser/attoparser/2.0.6.RELEASE/8f603f22a18d4f7258f8860ccbb68b069f49904a/attoparser-2.0.6.RELEASE.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.unbescape/unbescape/1.1.6.RELEASE/7b90360afb2b860e09e8347112800d12c12b2a13/unbescape-1.1.6.RELEASE.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-annotations/2.14.3/b49701acb02b8e95ae1967821cfbafc220cf5795/jackson-annotations-2.14.3.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-core/2.14.3/4fa101f81504ed6811bf1823270adb51a9b45ff3/jackson-core-2.14.3.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/io.micrometer/micrometer-commons/1.10.8/321a2661884620ddcc30af8adca6534cb706970b/micrometer-commons-1.10.8.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/net.minidev/accessors-smart/2.4.11/245ceca7bdf3190fbb977045c852d5f3c8efece1/accessors-smart-2.4.11.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.apiguardian/apiguardian-api/1.1.2/a231e0d844d2721b0fa1b238006d15c6ded6842a/apiguardian-api-1.1.2.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.junit.platform/junit-platform-commons/1.9.3/36b2e26a90c41603be7f0094bee80e3f8a2cd4d4/junit-platform-commons-1.9.3.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.opentest4j/opentest4j/1.2.0/28c11eb91f9b6d8e200631d46e20a7f407f2a046/opentest4j-1.2.0.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/ch.qos.logback/logback-core/1.4.8/3fba9c105e0efc5ffdcda701379687917d5286f7/logback-core-1.4.8.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.apache.logging.log4j/log4j-api/2.19.0/ea1b37f38c327596b216542bc636cfdc0b8036fa/log4j-api-2.19.0.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm/9.3/8e6300ef51c1d801a7ed62d07cd221aca3a90640/asm-9.3.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/com.h2database/h2/2.1.214/d5c2005c9e3279201e12d4776c948578b16bf8b2/h2-2.1.214.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.junit.jupiter/junit-jupiter-engine/5.9.3/355322b03bf39306a183162cd06626c206f0286b/junit-jupiter-engine-5.9.3.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.objenesis/objenesis/3.2/7fadf57620c8b8abdf7519533e5527367cb51f09/objenesis-3.2.jar:/Users/anshinyoung/.gradle/caches/modules-2/files-2.1/org.junit.platform/junit-platform-engine/1.9.3/8616734a190f8d307376aeb7353dba0a2c037a09/junit-platform-engine-1.9.3.jar com.intellij.rt.junit.JUnitStarter -ideVersion5 -junit5 hello.hellospring.service.MemberServiceIntegrationTest,회원가입20:50:58.916 [main] DEBUG org.springframework.boot.test.context.SpringBootTestContextBootstrapper -- Neither @ContextConfiguration nor @ContextHierarchy found for test class [MemberServiceIntegrationTest]: using SpringBootContextLoader20:50:58.918 [main] DEBUG org.springframework.test.context.support.AbstractContextLoader -- Could not detect default resource locations for test class [hello.hellospring.service.MemberServiceIntegrationTest]: no resource found for suffixes {-context.xml, Context.groovy}.20:50:58.918 [main] INFO org.springframework.test.context.support.AnnotationConfigContextLoaderUtils -- Could not detect default configuration classes for test class [hello.hellospring.service.MemberServiceIntegrationTest]: MemberServiceIntegrationTest does not declare any static, non-private, non-final, nested classes annotated with @Configuration.20:50:58.927 [main] DEBUG org.springframework.boot.test.context.SpringBootTestContextBootstrapper -- Using ContextCustomizers for test class [MemberServiceIntegrationTest]: [DisableObservabilityContextCustomizer, PropertyMappingContextCustomizer, Customizer, ExcludeFilterContextCustomizer, DuplicateJsonObjectContextCustomizer, MockitoContextCustomizer, TestRestTemplateContextCustomizer]20:50:58.959 [main] DEBUG org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider -- Identified candidate component class: file [/Users/anshinyoung/study/hello-spring/out/production/classes/hello/hellospring/HelloSpringApplication.class]20:50:58.960 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper -- Found @SpringBootConfiguration hello.hellospring.HelloSpringApplication for test class hello.hellospring.service.MemberServiceIntegrationTest20:50:58.998 [main] DEBUG org.springframework.test.context.util.TestContextSpringFactoriesUtils -- Could not load TestExecutionListener [org.springframework.test.context.observation.MicrometerObservationRegistryTestExecutionListener]. Specify custom TestExecutionListener classes or make the default TestExecutionListener classes available.java.lang.ExceptionInInitializerError: null at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480) at org.springframework.core.io.support.SpringFactoriesLoader$FactoryInstantiator.instantiate(SpringFactoriesLoader.java:382) at org.springframework.core.io.support.SpringFactoriesLoader.instantiateFactory(SpringFactoriesLoader.java:228) at org.springframework.core.io.support.SpringFactoriesLoader.load(SpringFactoriesLoader.java:206) at org.springframework.core.io.support.SpringFactoriesLoader.load(SpringFactoriesLoader.java:178) at org.springframework.test.context.util.TestContextSpringFactoriesUtils.loadFactoryImplementations(TestContextSpringFactoriesUtils.java:71) at org.springframework.test.context.support.AbstractTestContextBootstrapper.getDefaultTestExecutionListeners(AbstractTestContextBootstrapper.java:198) at org.springframework.boot.test.context.SpringBootTestContextBootstrapper.getDefaultTestExecutionListeners(SpringBootTestContextBootstrapper.java:128) at org.springframework.test.context.support.AbstractTestContextBootstrapper.getTestExecutionListeners(AbstractTestContextBootstrapper.java:128) at org.springframework.test.context.TestContextManager.<init>(TestContextManager.java:131) at org.springframework.test.context.TestContextManager.<init>(TestContextManager.java:113) at org.junit.jupiter.engine.execution.ExtensionValuesStore.lambda$getOrComputeIfAbsent$4(ExtensionValuesStore.java:86) at org.junit.jupiter.engine.execution.ExtensionValuesStore$MemoizingSupplier.computeValue(ExtensionValuesStore.java:223) at org.junit.jupiter.engine.execution.ExtensionValuesStore$MemoizingSupplier.get(ExtensionValuesStore.java:211) at org.junit.jupiter.engine.execution.ExtensionValuesStore$StoredValue.evaluate(ExtensionValuesStore.java:191) at org.junit.jupiter.engine.execution.ExtensionValuesStore$StoredValue.access$100(ExtensionValuesStore.java:171) at org.junit.jupiter.engine.execution.ExtensionValuesStore.getOrComputeIfAbsent(ExtensionValuesStore.java:89) at org.junit.jupiter.engine.execution.ExtensionValuesStore.getOrComputeIfAbsent(ExtensionValuesStore.java:93) at org.junit.jupiter.engine.execution.NamespaceAwareStore.getOrComputeIfAbsent(NamespaceAwareStore.java:61) at org.springframework.test.context.junit.jupiter.SpringExtension.getTestContextManager(SpringExtension.java:294) at org.springframework.test.context.junit.jupiter.SpringExtension.beforeAll(SpringExtension.java:113) at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$invokeBeforeAllCallbacks$12(ClassBasedTestDescriptor.java:395) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeBeforeAllCallbacks(ClassBasedTestDescriptor.java:395) at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.before(ClassBasedTestDescriptor.java:211) at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.before(ClassBasedTestDescriptor.java:84) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:148) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35) at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:147) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:127) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:90) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:55) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:102) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:54) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86) at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86) at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53) at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:57) at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38) at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:232) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55)Caused by: java.lang.IllegalStateException: MicrometerObservationRegistryTestExecutionListener requires micrometer-observation 1.10.8 or higher at org.springframework.test.context.observation.MicrometerObservationRegistryTestExecutionListener.<clinit>(MicrometerObservationRegistryTestExecutionListener.java:80) ... 67 common frames omittedCaused by: java.lang.NoClassDefFoundError: io/micrometer/context/ThreadLocalAccessor at java.base/java.lang.ClassLoader.defineClass1(Native Method) at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1012) at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862) at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760) at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681) at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520) at java.base/java.lang.Class.forName0(Native Method) at java.base/java.lang.Class.forName(Class.java:467) at org.springframework.test.context.observation.MicrometerObservationRegistryTestExecutionListener.<clinit>(MicrometerObservationRegistryTestExecutionListener.java:76) ... 67 common frames omittedCaused by: java.lang.ClassNotFoundException: io.micrometer.context.ThreadLocalAccessor at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520) ... 79 common frames omitted20:50:59.002 [main] DEBUG org.springframework.boot.test.context.SpringBootTestContextBootstrapper -- Using TestExecutionListeners for test class [MemberServiceIntegrationTest]: [ServletTestExecutionListener, DirtiesContextBeforeModesTestExecutionListener, ApplicationEventsTestExecutionListener, MockitoTestExecutionListener, DependencyInjectionTestExecutionListener, DirtiesContextTestExecutionListener, TransactionalTestExecutionListener, SqlScriptsTestExecutionListener, EventPublishingTestExecutionListener, RestDocsTestExecutionListener, MockRestServiceServerResetTestExecutionListener, MockMvcPrintOnlyOnFailureTestExecutionListener, WebDriverTestExecutionListener, MockWebServiceServerTestExecutionListener, ResetMocksTestExecutionListener]20:50:59.002 [main] DEBUG org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener -- Before test class: class [MemberServiceIntegrationTest], class annotated with @DirtiesContext [false] with mode [null] . ____ _ /\\ / ___'_ __ (_)_ _ \ \ \ \( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.0.8)2023-06-27T20:50:59.103+09:00 INFO 15106 --- [ main] h.h.s.MemberServiceIntegrationTest : Starting MemberServiceIntegrationTest using Java 17.0.7 with PID 15106 (started by anshinyoung in /Users/anshinyoung/study/hello-spring)2023-06-27T20:50:59.103+09:00 INFO 15106 --- [ main] h.h.s.MemberServiceIntegrationTest : No active profile set, falling back to 1 default profile: "default"2023-06-27T20:50:59.502+09:00 INFO 15106 --- [ main] o.s.b.a.w.s.WelcomePageHandlerMapping : Adding welcome page: class path resource [static/index.html]2023-06-27T20:50:59.579+09:00 INFO 15106 --- [ main] h.h.s.MemberServiceIntegrationTest : Started MemberServiceIntegrationTest in 0.562 seconds (process running for 0.914)2023-06-27T20:50:59.589+09:00 INFO 15106 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...2023-06-27T20:51:01.663+09:00 ERROR 15106 --- [ main] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Exception during pool initialization.org.h2.jdbc.JdbcSQLInvalidAuthorizationSpecException: Wrong user name or password [28000-214] at org.h2.message.DbException.getJdbcSQLException(DbException.java:510) ~[h2-2.1.214.jar:2.1.214] at org.h2.engine.SessionRemote.readException(SessionRemote.java:637) ~[h2-2.1.214.jar:2.1.214] at org.h2.engine.SessionRemote.done(SessionRemote.java:606) ~[h2-2.1.214.jar:2.1.214] at org.h2.engine.SessionRemote.initTransfer(SessionRemote.java:163) ~[h2-2.1.214.jar:2.1.214] at org.h2.engine.SessionRemote.connectServer(SessionRemote.java:433) ~[h2-2.1.214.jar:2.1.214] at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:325) ~[h2-2.1.214.jar:2.1.214] at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:122) ~[h2-2.1.214.jar:2.1.214] at org.h2.Driver.connect(Driver.java:59) ~[h2-2.1.214.jar:2.1.214] at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138) ~[HikariCP-5.0.1.jar:na] at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:359) ~[HikariCP-5.0.1.jar:na] at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:201) ~[HikariCP-5.0.1.jar:na] at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:470) ~[HikariCP-5.0.1.jar:na] at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561) ~[HikariCP-5.0.1.jar:na] at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:100) ~[HikariCP-5.0.1.jar:na] at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) ~[HikariCP-5.0.1.jar:na] at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:269) ~[spring-jdbc-6.0.10.jar:6.0.10] at org.springframework.transaction.support.AbstractPlatformTransactionManager.startTransaction(AbstractPlatformTransactionManager.java:400) ~[spring-tx-6.0.10.jar:6.0.10] at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:373) ~[spring-tx-6.0.10.jar:6.0.10] at org.springframework.test.context.transaction.TransactionContext.startTransaction(TransactionContext.java:103) ~[spring-test-6.0.10.jar:6.0.10] at org.springframework.test.context.transaction.TransactionalTestExecutionListener.beforeTestMethod(TransactionalTestExecutionListener.java:235) ~[spring-test-6.0.10.jar:6.0.10] at org.springframework.test.context.TestContextManager.beforeTestMethod(TestContextManager.java:288) ~[spring-test-6.0.10.jar:6.0.10] at org.springframework.test.context.junit.jupiter.SpringExtension.beforeEach(SpringExtension.java:174) ~[spring-test-6.0.10.jar:6.0.10] at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeEachCallbacks$2(TestMethodTestDescriptor.java:166) ~[junit-jupiter-engine-5.9.3.jar:5.9.3] at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeMethodsOrCallbacksUntilExceptionOccurs$6(TestMethodTestDescriptor.java:202) ~[junit-jupiter-engine-5.9.3.jar:5.9.3] at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeMethodsOrCallbacksUntilExceptionOccurs(TestMethodTestDescriptor.java:202) ~[junit-jupiter-engine-5.9.3.jar:5.9.3] at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeEachCallbacks(TestMethodTestDescriptor.java:165) ~[junit-jupiter-engine-5.9.3.jar:5.9.3] at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:132) ~[junit-jupiter-engine-5.9.3.jar:5.9.3] at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68) ~[junit-jupiter-engine-5.9.3.jar:5.9.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) ~[junit-platform-engine-1.9.3.jar:1.9.3] at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) ~[na:na] at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) ~[junit-platform-engine-1.9.3.jar:1.9.3] at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) ~[na:na] at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:147) ~[junit-platform-launcher-1.9.3.jar:1.9.3] at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:127) ~[junit-platform-launcher-1.9.3.jar:1.9.3] at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:90) ~[junit-platform-launcher-1.9.3.jar:1.9.3] at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:55) ~[junit-platform-launcher-1.9.3.jar:1.9.3] at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:102) ~[junit-platform-launcher-1.9.3.jar:1.9.3] at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:54) ~[junit-platform-launcher-1.9.3.jar:1.9.3] at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114) ~[junit-platform-launcher-1.9.3.jar:1.9.3] at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86) ~[junit-platform-launcher-1.9.3.jar:1.9.3] at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86) ~[junit-platform-launcher-1.9.3.jar:1.9.3] at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53) ~[junit-platform-launcher-1.9.3.jar:1.9.3] at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:57) ~[junit5-rt.jar:na] at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38) ~[junit-rt.jar:na] at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11) ~[idea_rt.jar:na] at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35) ~[junit-rt.jar:na] at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:232) ~[junit-rt.jar:na] at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55) ~[junit-rt.jar:na]2023-06-27T20:51:01.672+09:00 WARN 15106 --- [ main] o.s.test.context.TestContextManager : Caught exception while invoking 'beforeTestMethod' callback on TestExecutionListener [org.springframework.test.context.transaction.TransactionalTestExecutionListener] for test method [public void hello.hellospring.service.MemberServiceIntegrationTest.회원가입() throws java.lang.Exception] and test instance [hello.hellospring.service.MemberServiceIntegrationTest@67536ae0]org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:313) ~[spring-jdbc-6.0.10.jar:6.0.10] at org.springframework.transaction.support.AbstractPlatformTransactionManager.startTransaction(AbstractPlatformTransactionManager.java:400) ~[spring-tx-6.0.10.jar:6.0.10] at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:373) ~[spring-tx-6.0.10.jar:6.0.10] at org.springframework.test.context.transaction.TransactionContext.startTransaction(TransactionContext.java:103) ~[spring-test-6.0.10.jar:6.0.10] at org.springframework.test.context.transaction.TransactionalTestExecutionListener.beforeTestMethod(TransactionalTestExecutionListener.java:235) ~[spring-test-6.0.10.jar:6.0.10] at org.springframework.test.context.TestContextManager.beforeTestMethod(TestContextManager.java:288) ~[spring-test-6.0.10.jar:6.0.10] at org.springframework.test.context.junit.jupiter.SpringExtension.beforeEach(SpringExtension.java:174) ~[spring-test-6.0.10.jar:6.0.10] at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeEachCallbacks$2(TestMethodTestDescriptor.java:166) ~[junit-jupiter-engine-5.9.3.jar:5.9.3] at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeMethodsOrCallbacksUntilExceptionOccurs$6(TestMethodTestDescriptor.java:202) ~[junit-jupiter-engine-5.9.3.jar:5.9.3] at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeMethodsOrCallbacksUntilExceptionOccurs(TestMethodTestDescriptor.java:202) ~[junit-jupiter-engine-5.9.3.jar:5.9.3] at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeEachCallbacks(TestMethodTestDescriptor.java:165) ~[junit-jupiter-engine-5.9.3.jar:5.9.3] at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:132) ~[junit-jupiter-engine-5.9.3.jar:5.9.3] at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68) ~[junit-jupiter-engine-5.9.3.jar:5.9.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) ~[junit-platform-engine-1.9.3.jar:1.9.3] at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) ~[na:na] at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) ~[junit-platform-engine-1.9.3.jar:1.9.3] at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) ~[na:na] at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54) ~[junit-platform-engine-1.9.3.jar:1.9.3] at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:147) ~[junit-platform-launcher-1.9.3.jar:1.9.3] at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:127) ~[junit-platform-launcher-1.9.3.jar:1.9.3] at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:90) ~[junit-platform-launcher-1.9.3.jar:1.9.3] at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:55) ~[junit-platform-launcher-1.9.3.jar:1.9.3] at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:102) ~[junit-platform-launcher-1.9.3.jar:1.9.3] at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:54) ~[junit-platform-launcher-1.9.3.jar:1.9.3] at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114) ~[junit-platform-launcher-1.9.3.jar:1.9.3] at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86) ~[junit-platform-launcher-1.9.3.jar:1.9.3] at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86) ~[junit-platform-launcher-1.9.3.jar:1.9.3] at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53) ~[junit-platform-launcher-1.9.3.jar:1.9.3] at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:57) ~[junit5-rt.jar:na] at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38) ~[junit-rt.jar:na] at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11) ~[idea_rt.jar:na] at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35) ~[junit-rt.jar:na] at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:232) ~[junit-rt.jar:na] at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55) ~[junit-rt.jar:na]Caused by: org.h2.jdbc.JdbcSQLInvalidAuthorizationSpecException: Wrong user name or password [28000-214] at org.h2.message.DbException.getJdbcSQLException(DbException.java:510) ~[h2-2.1.214.jar:2.1.214] at org.h2.engine.SessionRemote.readException(SessionRemote.java:637) ~[h2-2.1.214.jar:2.1.214] at org.h2.engine.SessionRemote.done(SessionRemote.java:606) ~[h2-2.1.214.jar:2.1.214] at org.h2.engine.SessionRemote.initTransfer(SessionRemote.java:163) ~[h2-2.1.214.jar:2.1.214] at org.h2.engine.SessionRemote.connectServer(SessionRemote.java:433) ~[h2-2.1.214.jar:2.1.214] at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:325) ~[h2-2.1.214.jar:2.1.214] at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:122) ~[h2-2.1.214.jar:2.1.214] at org.h2.Driver.connect(Driver.java:59) ~[h2-2.1.214.jar:2.1.214] at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138) ~[HikariCP-5.0.1.jar:na] at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:359) ~[HikariCP-5.0.1.jar:na] at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:201) ~[HikariCP-5.0.1.jar:na] at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:470) ~[HikariCP-5.0.1.jar:na] at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561) ~[HikariCP-5.0.1.jar:na] at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:100) ~[HikariCP-5.0.1.jar:na] at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) ~[HikariCP-5.0.1.jar:na] at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:269) ~[spring-jdbc-6.0.10.jar:6.0.10] ... 60 common frames omittedorg.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:313) at org.springframework.transaction.support.AbstractPlatformTransactionManager.startTransaction(AbstractPlatformTransactionManager.java:400) at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:373) at org.springframework.test.context.transaction.TransactionContext.startTransaction(TransactionContext.java:103) at org.springframework.test.context.transaction.TransactionalTestExecutionListener.beforeTestMethod(TransactionalTestExecutionListener.java:235) at org.springframework.test.context.TestContextManager.beforeTestMethod(TestContextManager.java:288) at org.springframework.test.context.junit.jupiter.SpringExtension.beforeEach(SpringExtension.java:174) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeEachCallbacks$2(TestMethodTestDescriptor.java:166) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeMethodsOrCallbacksUntilExceptionOccurs$6(TestMethodTestDescriptor.java:202) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeMethodsOrCallbacksUntilExceptionOccurs(TestMethodTestDescriptor.java:202) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeEachCallbacks(TestMethodTestDescriptor.java:165) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:132) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35) at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:147) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:127) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:90) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:55) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:102) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:54) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86) at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86) at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53) at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:57) at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38) at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:232) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55)Caused by: org.h2.jdbc.JdbcSQLInvalidAuthorizationSpecException: Wrong user name or password [28000-200] at org.h2.message.DbException.getJdbcSQLException(DbException.java:461) at org.h2.message.DbException.getJdbcSQLException(DbException.java:429) at org.h2.message.DbException.get(DbException.java:205) at org.h2.message.DbException.get(DbException.java:181) at org.h2.message.DbException.get(DbException.java:170) at org.h2.engine.Engine.validateUserAndPassword(Engine.java:357) at org.h2.engine.Engine.createSessionAndValidate(Engine.java:176) at org.h2.engine.Engine.createSession(Engine.java:166) at org.h2.server.TcpServerThread.run(TcpServerThread.java:168) at java.base/java.lang.Thread.run(Thread.java:1583) at org.h2.message.DbException.getJdbcSQLException(DbException.java:510) at org.h2.engine.SessionRemote.readException(SessionRemote.java:637) at org.h2.engine.SessionRemote.done(SessionRemote.java:606) at org.h2.engine.SessionRemote.initTransfer(SessionRemote.java:163) at org.h2.engine.SessionRemote.connectServer(SessionRemote.java:433) at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:325) at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:122) at org.h2.Driver.connect(Driver.java:59) at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138) at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:359) at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:201) at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:470) at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561) at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:100) at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:269) ... 60 moreProcess finished with exit code 255강의 내용도 따라하고 h2도 버전을 맞췄는데 왜 jdbc연동이 안된다고 뜰까요? 해결방법이 뭘까요?
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
@responsebody
영상7분쯤에서 "저런게 걸린다고"하셨는데,클래스레벨에 @Responsebody붙어있으면 괜찮은거 아닌가요?!?
-
해결됨스프링과 JPA 기반 웹 애플리케이션 개발
사진 수정이 계속 안 됩니다.
cdn 방식으로 cropper를 사용하는 중이고요. 자바스크립트를 여러번 검토 하였음에도 프로필 사진 변경 문제는 끝까지 해결되지 않았습니다.https://www.youtube.com/watch?v=k330LVo2yw8setting.profile.html<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://thymeleaf.org/extras/spring-security"> <head th:fragment="head"> <meta charset="UTF-8"> <title>StudyOlle</title> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.4.1/dist/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"> <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.4.1/dist/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/jdenticon@3.2.0/dist/jdenticon.min.js" async integrity="sha384-yBhgDqxM50qJV5JPdayci8wCfooqvhFYbIKhv0hTtLvfeeyJMJCscRfFNKIxt43M" crossorigin="anonymous"> </script> <style> .container{ max-width:100%; } </style> </head> <nav th:fragment="main-nav" class="navbar navbar-expand-sm navbar-dark bg-dark"> <a class="navbar-brand" href="/" th:href="@{/}"> <img src="/images/logo_sm.png" width="30" height="30"> </a> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarSupportedContent"> <ul class="navbar-nav mr-auto"> <li class="nav-item"> <form th:action="@{/search/study}" class="form-inline" method="get"> <input class="form-control mr-sm-2" name="keyword" type="search" placeholder="스터디 찾기" aria-label="Search"> </form> </li> </ul> <ul class="navbar-nav justify-content-end"> <li class="nav-item" sec:authorize="isAnonymous()"> <a class="nav-link" th:href="@{/login}">로그인</a> </li> <li class="nav-item" sec:authorize="isAnonymous()"> <a class="nav-link" th:href="@{/sign-up}">가입</a> </li> <li class="nav-item" sec:authorize="isAuthenticated()"> <a class="nav-link" th:href="@{/notifications}"> <i class="fa fa-bell-o" aria-hidden="true"></i> </a> </li> <li class="nav-item" sec:authorize="isAuthenticated()"> <a class="nav-link btn btn-outline-primary" th:href="@{/notifications}"> <i class="fa fa-plus" aria-hidden="true"></i> 모임 개설 </a> </li> <li class="nav-item dropdown" sec:authorize="isAuthenticated()"> <a class="nav-link dropdown-toggle" href="#" id="userDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <svg th:if="${#strings.isEmpty(account?.profileImage)}" th:data-jdenticon-value="${#authentication.name}" width="24" height="24" class="rounded border bg-light"></svg> <img th:if="${!#strings.isEmpty(account?.profileImage)}" th:src="${account.profileImage}" width="24" height="24" class="rounded border"/> </a> <div class="dropdown-menu dropdown-menu-sm-right" aria-labelledby="userDropdown"> <h6 class="dropdown-header"> <span sec:authentication="name">Username</span> </h6> <a class="dropdown-item" th:href="@{'/profile/' + ${#authentication.name}}">프로필</a> <a class="dropdown-item" >스터디</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="#" th:href="@{'/settings/profile'}">설정</a> <form class="form-inline my-2 my-lg-0" action="#" th:action="@{/logout}" method="post"> <button class="dropdown-item" type="submit">로그아웃</button> </form> </div> </li> </ul> </div> </nav> <footer th:fragment="footer"> <div class="row justify-content-center"> <img class="mb-2" src="/images/logo_lang_kr.jpg" alt="" width="100"> <small class="d-block mb-3 text-muted">© 2023</small> </div> </footer> <div th:fragment="settings-menu (currentMenu)" class="list-group"> <a class="list-group-item list-group-item-action" th:classappend="${currentMenu == 'profile'}? active" href="#" th:href="@{/settings/profile}">프로필</a> <a class="list-group-item list-group-item-action" th:classappend="${currentMenu == 'password'}? active" href="#" th:href="@{/settings/password}">비밀번호</a> <a class="list-group-item list-group-item-action" th:classappend="${currentMenu == 'notification'}? active" href="#" th:href="@{/settings/notification}">알림</a> <a class="list-group-item list-group-item-action" th:classappend="${currentMenu == 'tags'}? active" href="#" th:href="@{/settings/tags}">관심 주제</a> <a class="list-group-item list-group-item-action" th:classappend="${currentMenu == 'zones'}? active" href="#" th:href="@{/settings/zones}">활동 지역</a> <a class="list-group-item list-group-item-action list-group-item-danger" th:classappend="${currentMenu == 'account'}? active" href="#" th:href="@{/settings/account}">계정</a> </div> <script type="application/javascript" th:fragment="form-validation"> (function () { 'use strict'; window.addEventListener('load', function () { // Fetch all the forms we want to apply custom Bootstrap validation styles to var forms = document.getElementsByClassName('needs-validation'); // Loop over them and prevent submission Array.prototype.filter.call(forms, function (form) { form.addEventListener('submit', function (event) { if (form.checkValidity() === false) { event.preventDefault(); event.stopPropagation(); } form.classList.add('was-validated') }, false) }) }, false) }()) </script> </html>fragments.html<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://thymeleaf.org/extras/spring-security"> <head th:fragment="head"> <meta charset="UTF-8"> <title>StudyOlle</title> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.4.1/dist/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"> <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.4.1/dist/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/jdenticon@3.2.0/dist/jdenticon.min.js" async integrity="sha384-yBhgDqxM50qJV5JPdayci8wCfooqvhFYbIKhv0hTtLvfeeyJMJCscRfFNKIxt43M" crossorigin="anonymous"> </script> <style> .container{ max-width:100%; } </style> </head> <nav th:fragment="main-nav" class="navbar navbar-expand-sm navbar-dark bg-dark"> <a class="navbar-brand" href="/" th:href="@{/}"> <img src="/images/logo_sm.png" width="30" height="30"> </a> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarSupportedContent"> <ul class="navbar-nav mr-auto"> <li class="nav-item"> <form th:action="@{/search/study}" class="form-inline" method="get"> <input class="form-control mr-sm-2" name="keyword" type="search" placeholder="스터디 찾기" aria-label="Search"> </form> </li> </ul> <ul class="navbar-nav justify-content-end"> <li class="nav-item" sec:authorize="isAnonymous()"> <a class="nav-link" th:href="@{/login}">로그인</a> </li> <li class="nav-item" sec:authorize="isAnonymous()"> <a class="nav-link" th:href="@{/sign-up}">가입</a> </li> <li class="nav-item" sec:authorize="isAuthenticated()"> <a class="nav-link" th:href="@{/notifications}"> <i class="fa fa-bell-o" aria-hidden="true"></i> </a> </li> <li class="nav-item" sec:authorize="isAuthenticated()"> <a class="nav-link btn btn-outline-primary" th:href="@{/notifications}"> <i class="fa fa-plus" aria-hidden="true"></i> 모임 개설 </a> </li> <li class="nav-item dropdown" sec:authorize="isAuthenticated()"> <a class="nav-link dropdown-toggle" href="#" id="userDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <svg th:if="${#strings.isEmpty(account?.profileImage)}" th:data-jdenticon-value="${#authentication.name}" width="24" height="24" class="rounded border bg-light"></svg> <img th:if="${!#strings.isEmpty(account?.profileImage)}" th:src="${account.profileImage}" width="24" height="24" class="rounded border"/> </a> <div class="dropdown-menu dropdown-menu-sm-right" aria-labelledby="userDropdown"> <h6 class="dropdown-header"> <span sec:authentication="name">Username</span> </h6> <a class="dropdown-item" th:href="@{'/profile/' + ${#authentication.name}}">프로필</a> <a class="dropdown-item" >스터디</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="#" th:href="@{'/settings/profile'}">설정</a> <form class="form-inline my-2 my-lg-0" action="#" th:action="@{/logout}" method="post"> <button class="dropdown-item" type="submit">로그아웃</button> </form> </div> </li> </ul> </div> </nav> <footer th:fragment="footer"> <div class="row justify-content-center"> <img class="mb-2" src="/images/logo_lang_kr.jpg" alt="" width="100"> <small class="d-block mb-3 text-muted">© 2023</small> </div> </footer> <div th:fragment="settings-menu (currentMenu)" class="list-group"> <a class="list-group-item list-group-item-action" th:classappend="${currentMenu == 'profile'}? active" href="#" th:href="@{/settings/profile}">프로필</a> <a class="list-group-item list-group-item-action" th:classappend="${currentMenu == 'password'}? active" href="#" th:href="@{/settings/password}">비밀번호</a> <a class="list-group-item list-group-item-action" th:classappend="${currentMenu == 'notification'}? active" href="#" th:href="@{/settings/notification}">알림</a> <a class="list-group-item list-group-item-action" th:classappend="${currentMenu == 'tags'}? active" href="#" th:href="@{/settings/tags}">관심 주제</a> <a class="list-group-item list-group-item-action" th:classappend="${currentMenu == 'zones'}? active" href="#" th:href="@{/settings/zones}">활동 지역</a> <a class="list-group-item list-group-item-action list-group-item-danger" th:classappend="${currentMenu == 'account'}? active" href="#" th:href="@{/settings/account}">계정</a> </div> <script type="application/javascript" th:fragment="form-validation"> (function () { 'use strict'; window.addEventListener('load', function () { // Fetch all the forms we want to apply custom Bootstrap validation styles to var forms = document.getElementsByClassName('needs-validation'); // Loop over them and prevent submission Array.prototype.filter.call(forms, function (form) { form.addEventListener('submit', function (event) { if (form.checkValidity() === false) { event.preventDefault(); event.stopPropagation(); } form.classList.add('was-validated') }, false) }) }, false) }()) </script> </html>SettingsController.java@Controller @RequiredArgsConstructor public class SettingsController { final static String SETTING_PROFILE_VIEW_NAME="settings/profile"; final static String SETTING_PROFILE_URL="/settings/profile"; private final AccountService accountService; @GetMapping(SETTING_PROFILE_URL) public String profileUpdateForm(@CurrentUser Account account, Model model){ model.addAttribute(account); model.addAttribute(new Profile(account)); return SETTING_PROFILE_VIEW_NAME; } @PostMapping(SETTING_PROFILE_URL) public String updateProfile(@CurrentUser Account account, @Valid Profile profile, Errors errors, Model model, RedirectAttributes attributes){ if(errors.hasErrors()){ model.addAttribute(account); return SETTING_PROFILE_VIEW_NAME; } accountService.updateProfile(account, profile); attributes.addFlashAttribute("message","프로필을 수정했습니다."); return "redirect:"+SETTING_PROFILE_URL; } }AccountService.javapublic void updateProfile(Account account, Profile profile){ account.setUrl(profile.getUrl()); account.setBio(profile.getBio()); account.setOccupation(profile.getOccupation()); account.setLocation(profile.getLocation()); account.setProfileImage(profile.getProfileImage()); accountRepository.save(account); }Profile.java@Data @NoArgsConstructor public class Profile { @Length(max = 35) private String bio; @Length(max = 50) private String url; @Length(max = 50) private String occupation; @Length(max = 50) private String location; private String profileImage; public Profile(Account account){ this.bio=account.getBio(); this.url=account.getUrl(); this.occupation=account.getOccupation(); this.location=account.getLocation(); this.profileImage=account.getProfileImage(); } }
-
미해결실전! 스프링 데이터 JPA
부모 엔티티의 Respository 로 저장시 자식 엔티티의 영속성 전이 문제
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]김영한님 안녕하세요. JPA 사용중에 부모 엔티티의 Respository 로 저장시 자식 엔티티의 영속성 전이 문제가 있어 질문 남깁니다. 상황은 다음과 같습니다.게시판과 게시판의 댓글을 하나의 애그리거트로 보고 게시판(루트 애그리더트)을 통해 댓글을 작성하려고 합니다. 댓글의 게시판 칼럼을 세팅하고 게시판의 repository로 save 하게 되면 댓글이 영속성 상태가 되지 않습니다. 근데 게시판 내부에 있는 댓글 리스트에 추가된 신규 댓글을 영속성 상태입니다. (영속성 상태 여부는 id 값 존재 여부로 판단했습니다.) 위 캡쳐에서 board 의 commentList의 인덱스가 4인 BoardComment 를 보시면 id가 7로 세팅 되어 있지만, boardComment 의 id는 null 로 되어 있습니다. 그래서 물어보고 싶은건 다음과 같습니다.위 상황에서 boardComment 의 id 가 7(null 이 아닌)이 될 수 있는 방법댓글 조회/수정/삭제에서 DDD 를 적용했을때의 로직 DDD 에 맞게 루트 애그리거트를 통한 CRUD 를 만들려고 하다보니 이런 질문을 하게 되었습니다. 이 문제의 전체코드는 https://github.com/SongHae8640/community 이고, 위 테스트 코드는 https://github.com/SongHae8640/community/blob/master/src/test/java/com/example/community/domain/board/comment/BoardCommentTest.java 입니다. 확인 부탁드립니다.감사합니다.