묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
open or import
제가 이 강의 듣기 전 java 인강도 듣고 있던 터라 인텔리제이에서 open or import 버튼을 누르지못하는데요 (초기화면으로 돌아가지 못해요) 혹시 인텔리제이를 삭제했다가 다시 깔아야 하나요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Hibernate 질문 있습니다.
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 아니오3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]17 :13 에서 MemberServiceIntegrationTest 의 회원가입을 실행했을 때 김영한님은 insert into member(id,name) values (null,?) 라고 뜨시는데 저는insert into member (name, id) values (?,default) 라고 뜹니다 member 과 values 둘 다 순서가 바뀐 것 같은데 어디를 봐야 고칠 수 있을까요..?
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
anyRequest().access(매니저) 질문!
강사님 안녕하세다음과 같은 코드에서.anyRequest().authenticated()는 따로 안해줘도 되는건가요? 음 그러니깐 궁금한것이 원래 하드코딩으로 설정하게되저희가 권한규칙 부여한것외의 엔트리포인트는 모두 인증되어야한다고 설정해줘야하잖아요!1근데 저렇게 매니저를 넣어주게되면 ?저것외의 엔트리포인트는 인증되어야한다는 어디서 처리하게되는지 궁금해요
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
ToOne은 왜 한 번만 땡겨오나요?
안녕하세요 강의 설명중에 ToOne은 한번만 땡긴다고 하셨는데 이유가 주문당 멤버랑 배송은 하나만 있으니까 한번만 가지고 온다고 하신걸까요?
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
jwt와 oauth2 활용!
강사님 안녕하세요! 제가 강의를 다듣고 jwt와 oauth2를 활용해서 연습해보려고하는데요! 혹시 jwt와 oauth2를 사용하려면 넣어야하는 그래들 의존성이라든지 기타 조언해주실점 있으면 받고싶습니다!
-
미해결[초급] 찍어먹자! 코틀린과 Spring Security + JWT로 회원가입 만들기
4.1 마지막 회원가입 실행되지만 빈화면 뜸
오류없이 실행은되는데 계속 이렇게 아무것도 결과가 안나옵니다.봐도봐도 모르겠어 프로젝트 파일 남겨봅니다.https://drive.google.com/file/d/1UngsyVj2InuB9bJWA6hpdcjhMBkXI9w3/view
-
미해결스프링 배치
job launcher관련 질문 있습니다.
joblauncher 동기적 방식 설명을 보면 controller 를 하나 만들job di 로 받고 있는데요 job 이 여러개 있는 경우 예를 들어 a, b, c 3개의 잡이 있을 때 controller 에 a job 을 전달하려면 어떻게 해야되나요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
중복_회원_예외 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 뭐가 문제인지 모르겠습니다 ㅠㅠ isEqualto도 빨간색으로 뜨면서 작동이 안되고요 ㅠㅠpackage hello.hello_spring.service; import hello.hello_spring.domain.Member; import hello.hello_spring.repository.MemoryMemberRepository; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; import java.util.List; import java.util.Optional; import static org.assertj.core.api.Assertions.*; import static org.junit.jupiter.api.Assertions.*; class MemberServiceTest { MemberService memberService = new MemberService(); MemoryMemberRepository memoryMemberRepository = new MemoryMemberRepository(); @AfterEach public void afterEach() { memoryMemberRepository.cleatStore(); } @Test void 회원가입() { //given Member member = new Member(); member.setName("hello"); //when long saveId = memberService.join(member); //then Member findMember = memberService.findOne(saveId).get(); //ctrl + alt + v assertThat(member.getName()).isEqualTo(findMember.getName()); } @Test public void 중복_회원_예외() throws Exception { //given Member member1 = new Member(); member1.setName("spring"); Member member2 = new Member(); member2.setName("spring"); //when Long saveId = memberService.join(member1); //then IllegalStateException e = assertThrows(IllegalStateException.class, () -> memberService.join(member2)); assertThat(e.getMessage().isEqualTo("이미 존재하는 회원입니다.")); /* try { memberService.join(member2); fail(); } catch (IllegalStateException e) { assertThat(e.getMessage().equals("이미 존재하는 회원입니다.")); } */ } @Test void findMembers() { } @Test void findOne() { } }Unexpected exception type thrown, expected: <java.lang.IllegalStateException> but was: <java.lang.RuntimeException> Expected :class java.lang.IllegalStateException Actual :class java.lang.RuntimeException <Click to see difference> org.opentest4j.AssertionFailedError: Unexpected exception type thrown, expected: <java.lang.IllegalStateException> but was: <java.lang.RuntimeException> at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151) at org.junit.jupiter.api.AssertThrows.assertThrows(AssertThrows.java:67) at org.junit.jupiter.api.AssertThrows.assertThrows(AssertThrows.java:35) at org.junit.jupiter.api.Assertions.assertThrows(Assertions.java:3115) at hello.hello_spring.service.MemberServiceTest.중복_회원_예외(MemberServiceTest.java:53) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) Caused by: java.lang.RuntimeException: java.lang.IllegalAccessException: 이미 존재하는 회원입니다. at hello.hello_spring.service.MemberService.lambda$validateDuplicateMember$0(MemberService.java:28) at java.base/java.util.Optional.ifPresent(Optional.java:178) at hello.hello_spring.service.MemberService.validateDuplicateMember(MemberService.java:24) at hello.hello_spring.service.MemberService.join(MemberService.java:16) at hello.hello_spring.service.MemberServiceTest.lambda$중복_회원_예외$0(MemberServiceTest.java:54) at org.junit.jupiter.api.AssertThrows.assertThrows(AssertThrows.java:53) ... 6 more Caused by: java.lang.IllegalAccessException: 이미 존재하는 회원입니다. at hello.hello_spring.service.MemberService.lambda$validateDuplicateMember$0(MemberService.java:26) ... 11 more java.lang.IllegalAccessException: 이미 존재하는 회원입니다. java.lang.RuntimeException: java.lang.IllegalAccessException: 이미 존재하는 회원입니다. at hello.hello_spring.service.MemberService.lambda$validateDuplicateMember$0(MemberService.java:28) at java.base/java.util.Optional.ifPresent(Optional.java:178) at hello.hello_spring.service.MemberService.validateDuplicateMember(MemberService.java:24) at hello.hello_spring.service.MemberService.join(MemberService.java:16) at hello.hello_spring.service.MemberServiceTest.lambda$중복_회원_예외$0(MemberServiceTest.java:54) at org.junit.jupiter.api.AssertThrows.assertThrows(AssertThrows.java:53) at org.junit.jupiter.api.AssertThrows.assertThrows(AssertThrows.java:35) at org.junit.jupiter.api.Assertions.assertThrows(Assertions.java:3115) at hello.hello_spring.service.MemberServiceTest.중복_회원_예외(MemberServiceTest.java:53) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) Caused by: java.lang.IllegalAccessException: 이미 존재하는 회원입니다. at hello.hello_spring.service.MemberService.lambda$validateDuplicateMember$0(MemberService.java:26) ... 11 more
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
AccessDeniedHandler가 작동하지않습니다
@Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { try { 생략... SecurityContextHolder.getContextHolderStrategy().getContext().setAuthentication(token); filterChain.doFilter(request, response); } catch (Exception e) { log.info("---------------JWT ERROR!------------"); log.info(e); log.info(e.getMessage()); ObjectMapper mapper = new ObjectMapper(); String jsonStr = mapper.writeValueAsString(Map.of("error", "ERROR_ACCESS_TOKEN")); response.setContentType("application/json"); response.setCharacterEncoding("UTF-8"); PrintWriter writer = response.getWriter(); writer.println(jsonStr); writer.close(); } }강의의 JWT와 @PreAuthorize 이용하기 파트 후반부에 강의처럼 USER권한만 가진 사용자로 ADMIN권한이 필요한 메소드에 접근하니 포스트맨에서 AccessDenied exception이 뜨지않고 catch (Exception e)가 예외를 잡아버려서 { "error": "ERROR_ACCESS_TOKEN" }결과가 이렇게 나옵니다 이미 AccessDenied 핸들러도 시큐리티에 등록 시킨후 입니다ADMIN권한을 가진 사용자 토큰으로 요청을 보내면 원하는 데이터도 잘 나옵니다 catch로 잡아서 예외를 던질까 시도해봤는데 이유는 모르겠지만 Exception에서만 예외가 잡힙니다ㅠ그래서 여러가지 해결책을 알아봤는데첫번째catch (RuntimeException e) { log.info("---------------JWT ERROR!------------"); log.info(e); log.info(e.getMessage()); ObjectMapper mapper = new ObjectMapper(); String jsonStr = mapper.writeValueAsString(Map.of("error", "ERROR_ACCESS_TOKEN")); response.setContentType("application/json"); response.setCharacterEncoding("UTF-8"); PrintWriter writer = response.getWriter(); writer.println(jsonStr); writer.close(); }이렇게 RuntimeException으로하면{ "error": "ERROR_ACCESSDENIED" }AccessDenied 핸들러가 잘 작동하구요 두번째SecurityContextHolder.getContextHolderStrategy().getContext().setAuthentication(token); } catch (Exception e) { log.info("---------------JWT ERROR!------------"); log.info(e); log.info(e.getMessage()); ObjectMapper mapper = new ObjectMapper(); String jsonStr = mapper.writeValueAsString(Map.of("error", "ERROR_ACCESS_TOKEN")); response.setContentType("application/json"); response.setCharacterEncoding("UTF-8"); PrintWriter writer = response.getWriter(); writer.println(jsonStr); writer.close(); } filterChain.doFilter(request, response);doFilter를 try catch 밖에 두어도 AccessDenied 핸들러가 잘 작동합니다세번째@ExceptionHandler(AccessDeniedException.class) public ResponseEntity<?> notAuthorized(AccessDeniedException e) { return ResponseEntity.status(HttpStatus.FORBIDDEN).body(e.getMessage()); }RestControllerAdvice로 하면 핸들러가 작동안하긴해도 예외처리가 가능했습니다근데 문제는 왜 원래코드에서 영상처럼 작동을 안하는지 이유를 모르겠습니다 제가 빠트린부분이 있을까요?스프링부트 버전도 똑같이 맞춰보기도 했습니다
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
상품주문_재고수량초과() 질문
@Test public void 상품주문_재고수량초과() throws Exception { //Given Member member = createMember(); Item item = createBook("시골 JPA", 10000, 10); //이름, 가격, 재고 int orderCount = 11; //재고보다 많은 수량 //When assertThrows(NotEnoughStockException.class, () -> orderService.order(member.getId(), item.getId(), orderCount)); //Then fail("재고 수량 부족 예외가 발생해야 한다."); }이렇게 작성할 경우, fail()문을 넣으면 테스트오류가 뜨는데 없애는 게 맞나요, 안넣으면 오류가 안떴을 경우를 어떻게 확인하나요??
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
실전강의 질문 (Rest 인증 필터 구현)
인증 필터에 왜 authenticationManager를 굳이 셋해주는지 궁금합니다!!..
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Java 17 다운로드
java 17을 다운받고 인텔리제이를 실행했는데요 group이나 version (보라색 글씨)가 활성화?가 안돼요그리고 java 11과 java 14를 깔았던게 있는데 이것때문에 cmd 에서 java -version 이라고 쳤을 때 14가 계속 뜨는 바람에 11과 14를 모두 지우고 17만 남겨뒀거든요 그런데 인텔리제이에서 제가 같이 듣고있는 자바코드들이 다 오류가 뜹니다. CoreApplication.java 도 실행이 아예 되질 않습니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
에노테이션예외 발생
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)y2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)y3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)y[질문 내용] Caused by: org.hibernate.AnnotationException: Entity 'jpabook.jpashop.domain.Category' has no identifier (every '@Entity' class must declare or inherit at least one '@Id' or '@EmbeddedId' property)실행시 에러메세지가 뜨는데 @Id 에노테이션이 있음에도 해결되지않습니다. 소스파일도 첨부합니다https://drive.google.com/file/d/126dOVMwaCPYOSqD4f7XOC0BkCUqtONAK/view?usp=sharing
-
해결됨스프링 시큐리티 완전 정복 [6.x 개정판]
스프링 부트 버전
강의에서 사용하신 3.2.2 는 안 보이고,대신 3.2.9가 가장 낮은 버전이고, 3.3.3으로 진행하려고 하는데 상관없나요?
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
동시 세션 제어 - sessionManagement().maximumSessions 강의
동시 세션 제어 - sessionManagement().maximumSessions 강의에서 이상한 부분이 있습니다.maxSessionsPreventsLogin가 true인 경우를 24:30초에 테스트 하실때 비밀번호를 틀려서 강의에서는 테스트가 정상적으로 안된거 같습니다.비밀번호가 1111인데 값을 3개만 입력해서 말씀드립니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
distinct 질문 드립니다.
안녕하세요.강의 잘 보고 있습니다. em.createQuery에서 distinct를 사용해도 DB에서 받아올 때는 뻥튀기된 데이터를 받아오는 것이 맞을까요?em.createQuery의 반환값으로 List<Order>에 담을 때 Order의 id 중복을 제거해서 담은 뒤 반환한다는 것이 맞을까요?결국 distinct를 사용하나 안 하나 DB에 나가는 쿼리는 같을까요?public List<Order> findAllWithItem() { return em.createQuery( "select distinct o from Order o" + " join fetch o.member m" + " join fetch o.delivery d" + " join fetch o.orderItems oi" + " join fetch oi.item i", Order.class) .getResultList(); } 참고한 질문과 답변입니다.https://www.inflearn.com/course/lecture?courseSlug=%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-JPA-API%EA%B0%9C%EB%B0%9C-%EC%84%B1%EB%8A%A5%EC%B5%9C%EC%A0%81%ED%99%94&unitId=24332&tab=community&category=questionDetail&q=555554
-
해결됨스프링 시큐리티 OAuth2
시큐리티 완전정복(6.x 개정판) 쿠폰 저도 받을수 있을까요.. ㅜ
학습질문과 전혀 관련없는 질문이라 죄송합니다. ㅠ저와같이 할인쿠폰 만료일 지나신 분 쿠폰요청글을 보고 혹시나 저도 아직 가능한지 여쭙고 싶어서 혹시나 하는 마음에 글올립니다.oAuth하고 이전버전 시큐리티 강의 듣고 있습니다.저도 메일을 늦게 확인하여서 쿠폰 만료일이 지났는데받을수있을까요?발급받았던 이메일 주소 는laundryday@naver.com입니다.. 좋은 하루 보내세요 감사합니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
cmd - gradlew 문제
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.왜 이런 오류가 발생하는 걸까요? gradlew.bat build로 해도 똑같고gradle home도 잘 지정되어 있습니다.
-
해결됨입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
그 admin 뷰 페이지 할 때 / 빼고하니 오류가 납니다.
link href="https://fonts.gstatic.com" rel="preconnect"> <link href="https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,600,600i,700,700i|Nunito:300,300i,400,400i,600,600i,700,700i|Poppins:300,300i,400,400i,500,500i,600,600i,700,700i" rel="stylesheet"> <!-- Vendor CSS Files --> <link href="assets/vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet" th:href="@{/assets/vendor/bootstrap/css/bootstrap.min.css}"> <link href="assets/vendor/bootstrap-icons/bootstrap-icons.css" rel="stylesheet" th:href="@{/assets/vendor/bootstrap-icons/bootstrap-icons.css}"> <link href="assets/vendor/boxicons/css/boxicons.min.css" rel="stylesheet" th:href="@{/assets/vendor/boxicons/css/boxicons.min.css}"> <link href="assets/vendor/quill/quill.snow.css" rel="stylesheet" th:href="@{/assets/vendor/quill/quill.snow.css}"> <link href="assets/vendor/quill/quill.bubble.css" rel="stylesheet" th:href="@{/assets/vendor/quill/quill.bubble.css}"> <link href="assets/vendor/remixicon/remixicon.css" rel="stylesheet" th:href="@{/assets/vendor/remixicon/remixicon.css}"> <link href="assets/vendor/simple-datatables/style.css" rel="stylesheet" th:href="@{/assets/vendor/simple-datatables/style.css}"> 그래서 이렇게하면 뷰페이지의 창깨짐 오류는 사라지는데..docker로 넘어갈 때는 어떻게하죠?? 3. Thymeleaf 경로 확인th:href="@{/admin/assets/vendor/quill/quill.bubble.css}"와 같이 경로를 설정한 경우, 해당 경로가 올바른지 확인하세요. Spring은 경로 앞에 /가 붙어야 정적 리소스를 찾을 수 있습니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
H2 DB 연결 오류 : MemberRepositoryTest 실행 시
[질문 내용]MemberRepositoryTest 실행 시 자꾸만 오류가 나네요....... 어찌 해야할지 ㅠ 오류 :java.lang.NullPointerException: Cannot invoke "org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(java.sql.SQLException, String)" because the return value of "org.hibernate.resource.transaction.backend.jdbc.internal.JdbcIsolationDelegate.sqlExceptionHelper()" is null at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcIsolationDelegate.delegateWork(JdbcIsolationDelegate.java:116) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]JdbcIsolationDelegate.java:116 at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.getJdbcEnvironmentUsingJdbcMetadata(JdbcEnvironmentInitiator.java:290) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final] jpashop/src/main/resources/application.yml spring: datasource: url: jdbc:h2:tcp://localhost/~/jpashop;MVCC=true username: sa password: driver-class-name: org.h2.Driver jpa: database-platform: org.hibernate.dialect.H2Dialect hibernate: ddl-auto: create #Application 실행 시점에 Entity 삭제 & 재생성 properties: hibernate: show_sql: true #생성한 SQL 이 다 보임 :) System out 을 통해 출력. format_sql: true logging: level: org.hibernate.SQL: debug #sql 을 전부 DEBUG 모드로 남긴다는 뜻. Logger 를 통해. server: port: 8092 MemberRepository.javapackage jpabook.jpashop; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import org.springframework.stereotype.Repository; @Repository //DAO 랑 그냥 똑같은거 public class MemberRepository { @PersistenceContext private EntityManager em; //starter-jpa-start 에 포함! // EntityManagerFactory ENTITY_MANAGER_FACTORY = Persistence.createEntityManagerFactory("JPA_DEMO");// // EntityManager em = ENTITY_MANAGER_FACTORY.createEntityManager(); public Long save(Member member) { // System.out.println("em:: "+em.toString()); System.out.println("save"); em.persist(member); //영속성. 영원히 저장한다 (=DB SAVE) return member.getId(); } //커맨드와 쿼리를 분리하는 정책 설계때문에 Id 만 리턴한다구 함 public Member find(Long id) { System.out.println("find"); return em.find(Member.class, id); } } MemberRepositoryTest.javapackage jpabook.jpashop; import org.assertj.core.api.Assertions; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.transaction.annotation.Transactional; // import org.junit.Before; @RunWith(SpringRunner.class) @SpringBootTest public class MemberRepositoryTest { @Autowired MemberRepository memberRepository; @Test @Transactional public void test() throws Exception{ //given Member member = new Member(); member.setUsername("memberA"); System.out.println(member.toString()); //when Long saveId = memberRepository.save(member); Member findMember = memberRepository.find(saveId); //then System.out.println("Then"); Assertions.assertThat(findMember.getId()).isEqualTo(findMember.getId()); } }