inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

172만명의 커뮤니티!! 함께 토론해봐요.

26:30 경에 userinfo 분기가 강사님과 다릅니다.

미해결

스프링 시큐리티 OAuth2

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. OicdUserService의 아래 메서드에서 true를 반환해버리는데요. 우선 해당 함수의 if(authroization_code 이냐?) 분기를 타고, accessibleScopes가 empty 가 아닙니다. 아마 키클록에서 default 스코프가 있기 때문인거 같은데요. shouldRetrieveUserInfo 해당 영상에서는 키클록의 default 스코프가 빠진걸까요? 아니면 grant type 문제일까요? 참고로 grant type 은 별다른 옵션 없이도, registration repository에서 꺼내오는 순간 registration에는 authroization_code 입니다.

  • java
  • spring
  • spring-boot
  • oauth
비오 댓글 1 좋아요 0 조회수 382

컨트롤러에서 html 파일로 바로가기가 안됨

해결됨

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 인텔리제이 Ultimate를 구매한 상태로 사용 중인데요. 영한님 강의 내에서는 (cmd + 클릭)으로 해당 html 파일로 바로가기가 되는데, 저는 안되네요. 구글링 해보아도 명확한 답을 얻지는 못해서 별도 설정 방법이 있는건지 여쭤봅니다!

  • java
  • spring
  • mvc
  • spring-boot
박호정 댓글 1 좋아요 1 조회수 265

질문 있습니다.

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. save 메소드를 보면 Model을 파라미터로 받고있는데요 앞서 MVC를 직접 구현하는 단계에서는 Map<String,Object> model을 FrontController에 구현해서 받았었는데, 어노테이션 기반에서도 Model이 Dispatcher 서블릿에 구현되어 있는건가요?

  • spring
  • mvc
anten 댓글 2 좋아요 0 조회수 362

폼에서 저장 페이지로 넘어갈 때의 POST에 대한 궁금증

해결됨

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] HTTP GET 방식 기능 : 조회 HTTP POST 방식 기능 : 처리 , 저장 , 등록 , ... 와 같이 알고 있습니다. 즉 사진에서 노란색 밑줄 친 코드는 현재 폼에서 입력된 데이터를 /servlet/members/save 경로에서 "처리"할 것을 요구하는 코드로 이해했습니다. /servlet/members/save 경로에 해당되는 MemberSaveServlet 클래스에선 폼에서 발생한 데이터를 "저장"시키는 역할을 하고요. 그런데 다음과 같이 실제 폼에서 username과 age를 입력한 후 submit을 누르면 다음과 같이 /servlet/members/save페이지가 "조회" 되면서 데이터가 "저장" 되는 두 가지 작업이 동시에 일어나는 것을 확인할 수 있었습니다. 저는 POST 방식은 데이터 "조회" 가 아닌 데이터 "처리" 로 알고 있어서 폼에서 데이터를 입력하면 페이지에는 아무런 변화가 없고 그냥 데이터가 "저장" 만 되는 것으로 알고 있었습니다 그래서 /servlet/members/save 페이지를 "조회" 해서 데이터가 잘 "저장" 됐는지 확인하려면 GET 을 통하여 해당 페이지로 넘어가게끔 추가로 로직을 구성해야되는 것으로 생각하였습니다. [핵심 질문] 이에 따라 앞으로 POST 방식을 쓰는 경우 페이지가 "조회" 되면서 데이터 "처리" 가 동시에 순차적으로 일어난다고 봐도 될지 궁금합니다 !

  • spring
  • mvc
  • http
  • post
  • get
  • servlet
  • jsp
경민 댓글 2 좋아요 0 조회수 521

새로고침해야만 등록한 글이 리스트에 뜹니다.

미해결

스프링 프레임워크는 내 손에 [스프1탄]

게시글 입력후 새로고침 해야만 새로 등록한 게시글이 리스트에 뜹니다. 제가 놓친 코드가 있을까요? 아니면 브라우저 문제일까요? (문제 상황 gif 이미지 첨부합니다) <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> <%@page isELIgnored="false" %> <!DOCTYPE html> <html lang="en"> <head> <title>Spring MVC02</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script> <script type="text/javascript"> $(document).ready(function () { loadList(); }); function loadList() { //서버와 통신 : 게시판 리스트 가져오기 $.ajax({ url: "boardList.do", type: "get", dataType: "json", success: makeView, error: function () { alert("error"); } }); } function makeView(data) { //콜백 함수 : 서버에서 응답으로 받은 데이터를 처리하는 함수 var listHtml = "<table class='table table-bordered'>" listHtml += "<tr>"; listHtml += "<td>번호</td>"; listHtml += "<td>제목</td>"; listHtml += "<td>작성자</td>"; listHtml += "<td>작성일</td>"; listHtml += "<td>조회수</td>"; listHtml += "</tr>"; $.each(data, function (index, obj) { listHtml += "<tr>"; listHtml += "<td>" + obj.idx + "</td>"; listHtml += "<td>" + obj.title + "</td>"; listHtml += "<td>" + obj.writer + "</td>"; listHtml += "<td>" + obj.indate + "</td>"; listHtml += "<td>" + obj.count + "</td>"; listHtml += "</tr>"; }); listHtml += "<tr>"; listHtml += "<td colspan='5'>"; listHtml += "<button class='btn btn-primary btn-sm' onclick='goForm()'>글쓰기</button>"; listHtml += "</td>"; listHtml += "</tr>"; listHtml += "</table>"; $("#view").html(listHtml); //view라는 id를 가진 div에 listHTML을 출력 $("#view").css("display", "block"); $("#wform").css("display", "none"); } function goForm() { $("#view").css("display", "none"); //숨기기 $("#wform").css("display", "block"); //보이기 } function goList() { $("#view").css("display", "block"); $("#wform").css("display", "none"); } function goInsert() { // var title = $("#title").val(); // #title에서 사용자가 입력한 value를 가져옴 // var content = $("#content").val(); // var writer = $("#writer").val(); var fData = $("#frm").serialize(); //form에 입력된 모든 데이터를 가져옴 // alert(fData); $.ajax({ url: "boardInsert.do", type: "post", data: fData, success: loadList, error: function () {alert("error");} }); } </script> </head> <body> <div class="container"> <h2>Panel Heading</h2> <div class="panel panel-default"> <div class="panel-heading">Spring MVC 02</div> <div class="panel-body" id="view">Panel Content</div> <div class="panel-body" id="wform" style="display: none"> <form id="frm"> <table class="table"> <tr> <td>제목</td> <td><input type="text" id="window-title" name="title" class="form-control"></td> </tr> <tr> <td>내용</td> <td><textarea type="textarea" rows="7" id="content" name="content" class="form-control"></textarea></td> </tr> <tr> <td>작성자</td> <td><input type="text" id="writer" name="writer" class="form-control"></td> </tr> <tr> <td colspan="2" align="center"> <button type="submit" class="btn btn-success btn-sm" onclick="goInsert()">등록</button> <button type="reset" class="btn btn-warning btn-sm">취소</button> <button type="button" class="btn btn-info btn-sm" onclick="goList()">리스트</button> </td> </tr> </table> </form> </div> <div class="panel-footer">인프런_스프1탄_박매일</div> </div> </div> </body> </html> @RequestMapping("/boardInsert.do") public @ResponseBody void boardInsert(Board vo) { boardMapper.boardInsert(vo); }

  • jsp
  • spring
  • mvc
  • spring-security
감자 댓글 1 좋아요 0 조회수 271

Unable to locate persister

미해결

스프링 DB 2편 - 데이터 접근 활용 기술

이런 에러가 발생하는데 어떻게 해결해야할지 구글에 검색해도 잘 나오지 않습니다.. 틀린지 맞는지 몇번 확인했는데 틀린건 없었던것 같습니다 그리고 어제까진 실행이 됐는데 Transactional어노테이션 주석처리 하고서 실행을 해보니 안되네요 혹여나 다시 원복해서 실행해도 안되고 틀린 코드가 없는거 같은데 다른게 뭔가 문제가 있는것 같습니다 도와주세요~

  • spring
  • mvc
  • jpa
  • querydsl
  • spring-data-mybatis
  • spring-jpa
인프런인인 댓글 4 좋아요 0 조회수 1688

static final 위치?

해결됨

김영한의 실전 자바 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 예제를 하면서 보던 도중 static final 위치를 바꾸면 어떻게 될까 해서... 쳐보니 이렇게 둘다 되었습니다. 혹시( static final)로 하는 이유가 있나요? 저가 생각해본게 첫째 : 관례 둘째 : 지정 범위? (연산자의 우선순위처럼 이런게 정해져 있는가 생각함.) 라고 생각해보았는데 답변 부탁드립니다.

  • java
생각하는자 댓글 1 좋아요 2 조회수 793

강의시 이론설명에 활용되는 자료가 어딨는지 모르겠어요.

해결됨

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

안녕하세요!! 현재 강의를 듣고 있는 수강생입니다!! 다름이 아니라 강의하시면서 이론에 대해 설명해주실 때, 쓰시는 자료들은 어디서 볼 수 있을까요?? 코드에 대해 공부하면서 이론적인 부분도 이해하고 넘어가면 이후의 수업에서 이해하고 직접 실행해볼 때, 더 좋을 것 같아서요!!

  • java
  • spring
  • mvc
  • spring-boot
RealTone 댓글 1 좋아요 1 조회수 286

컬렉션 fetch join

해결됨

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

안녕하세요 강사님 프로젝트 중 궁금한 점이 있어 질문드립니다..! 6개의 엔티티를 조인해야 하는 상황인데 현업에서도 이렇게 조인을 하기도 하나요? 물론 성능에 따라 다르겠지만 몇개 정도의 테이블을 조인하는 것이 적당할까요? 컬렉션 패치 조인은 1개까지만 하라고 하셨는데 현재 상황은 3개나 컬렉션이 존재합니다. 이런경우는 어떤식으로 해결하는게 좋을까요?? 강사님께서는 어떤식으로 해결하시는지 궁금합니다 ㅎㅎ 감사합니다!

  • java
  • spring
  • spring-boot
  • jpa
모깅 댓글 2 좋아요 0 조회수 831

V0 -> V1으로 전환되는 과정에서 궁금한 점이 생겼습니다.

해결됨

스프링 DB 1편 - 데이터 접근 핵심 원리

MemberRepositoryV0에서 직접 만든 DBConnectionUtil을 getConnection을 통해 Connection정보를 가져오는 것인데, 이를 V1에서는 직접 만든 DBConnectionUtil을 dataSource로 변경하고 실제 테스트에서 BeforeEach를 통해 Connection 정보를 주입하는 것인가요?

  • spring
  • mvc
  • spring-jdbc
jaemoon 댓글 1 좋아요 2 조회수 429

스프링 서비스 테스트 코드에 대한 질문

해결됨

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

서비스 계층의 클래스를 테스트하려고 준비하고 있습니다. mock이 너무 많으면 유지보수가 힘들어져서 MemoryRepository를 직접 구현해서 사용하라고 하던데 @DataJpaTest 어노테이션으로 Repository객체의 mock을 대신해도 될까요?

  • spring
  • mvc
김재연 댓글 1 좋아요 0 조회수 270

18분대에서의 테스트 실행 시 오류

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] WARNING: A Java agent has been loaded dynamically (C:\Users\jkjin\.gradle\caches\modules-2\files-2.1\net.bytebuddy\byte-buddy-agent\1.14.10\90ed94ac044ea8953b224304c762316e91fd6b31\byte-buddy-agent-1.14.10.jar) WARNING: If a serviceability tool is in use, please run with -XX:+EnableDynamicAgentLoading to hide this warning WARNING: If a serviceability tool is not in use, please run with -Djdk.instrument.traceUsage for more information WARNING: Dynamic loading of agents will be disallowed by default in a future release OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended 아래와 같이 오류가 발생합니다. 테스트는 잘 실행되지만, 영상에서처럼 Hibernate: 쿼리문~ 이 부분이 보이지 않네요.. 설정이 다르다는것처럼 보이는데 뭐가 문제일까요?

  • java
  • spring
  • mvc
  • spring-boot
akdlzhf2008 댓글 1 좋아요 0 조회수 809

save() 테스트 시 findById() 사용 이유

해결됨

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] [선생님 테스트 로직] @Test void save() { Member member = new Member("hello", 20); Member savedMember = memberRepository.save(member); Member findMember = memberRepository.findById(savedMember.getId()); assertThat(findMember).isEqualTo(savedMember); } 다음의 코드와 같이 선생님께서는 save() 테스트를 할 때 findById() 로직도 사용하시는 것을 확인할 수 있었습니다. 하지만 findById() 로직은 아직 테스트를 거쳐서 검증받지 못한 로직이므로 findById()를 쓰는 것이 아닌 순수 save()만 가지고 테스트를 해야하지 않을까 하는 궁금증이 생겼습니다! [제 테스트 로직] @Test void save() { Member member = new Member("hello", 20); Member savedMember = memberRepository.save(member); assertThat(member).isEqualTo(savedMember); } 그래서 이런 식으로 테스트 하는 것이 어떠한지 선생님께 질문 드리고 싶습니다! 들여쓰기가 안 되어서 올라갔네요 ㅠㅠ..!! 수정해서 다시 올렸습니다 !

  • spring
  • mvc
경민 댓글 1 좋아요 0 조회수 366

스프링 핸들러매핑, 핸들러 어댑터, 컨트롤러

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

안녕하세요! 스프링 MVC와 관련하여 궁금한 점이 있습니다. 스스로 만든 프레임워크에서는 다양한 형태의 헨들러를 다루기 위해 핸들러 어댑터 목록과 핸들러 매핑을 도입한 것으로 이해하고 있습니다. 스프링 MVC의 경우 99.9% RequestMappingHandlerMapping 과 RequestMappingHandlerAdapter를 쓴다고 강의자료에 나와 있는데요, 그렇다면 사실상 핸들러(컨트롤러)도 하나의 통일 된 형태를 가지고 있는건가요? 감사합니다.

  • spring
  • mvc
침착한치킨다리 댓글 1 좋아요 0 조회수 483

키보드 뭐쓰는지 궁금해요ㅠㅠ

미해결

김영한의 실전 자바 - 기본편

학습과 관련은 없지만, 키보드 소리가 너무 좋아서요..

  • java
  • 객체지향
최원호 댓글 1 좋아요 0 조회수 427

repository 관련 질문입니다.

해결됨

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

[질문 내용] 안녕하세요 김영한님 강의를 듣다 의문점이 생겨서 질문을 드립니다. 무료 강의 수강 후 해당 강의를 JPA 기본서와 함께 공부 중인 학생입니다. repository관련해서 어떤 방식이 맞는지 헷갈려서 질문드렸습니다. 무료 강의 기준에선 repositry안에 있는 interface를 상속받아서 엔티티이름Repository형식으로 구현하셨는데 해당 JPA활용1 강의에선 상속 없이 class파일로 만들어서 어떤 방식이 맞는지 모르겠습니다.

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
댓글 1 좋아요 2 조회수 451

질문

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 11:54초에 보면 HandlerAdapter에 의해서 handle 메소드가 실행되고, 우리가 앞서 정의했던 핸들러가 호출이되는데 여기서 핸들러 어댑터 안에 있는 ((HttpRequestHandler) handler).handleRequest(request,response); 이 부분은 우리가 메소드를 스프링 빈에 등록해서 생성된 것인가요? 아니면 우리가 메소드 이름을 일부러 맞춰준건가요?

  • spring
  • mvc
anten 댓글 1 좋아요 0 조회수 391

스프링부트가 아닌, 스프링 프레임워크일 경우 BasicErrorController

해결됨

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

안녕하세요, 스프링 부트일 경우, BasicErrorController 가 자동적으로 등록되어 사용된다고 하셨는데, 부트가 아닌 일반 스프링 프레임워크일 경우, BasicErrorController 와 비슷한 역할을 해주는 Controller 가 자동적으로 등록되지는 않는 것인지요? 부트가 아닌 스프링 프레임워크에서는 개발자가 예외나 response.sendError(); 에 대해서 아무런 대비/대처 설정 (예와나 sendError 를 처리해주는 코드를 작성하지 않았을 경우) 을 해주지 않았을 경우에는 어떤 default 설정을 따라가는지 궁금합니다. 스프링 부트일 경우, WebServerFactoryCustomizer<ConfigurableWebServerFactory> 를 구현한 클래스를 작성해서 ErrorPage를 지정해주고 있는데, 부트가 아닌 스프링 프레임워크에서는 어떻게 WebServerFactoryCustomizer<ConfigurableWebServerFactory> 를 구현한 것과 동일하게 custom 을 해줄 수 있는지 궁금합니다. 감사합니다.

  • spring
  • mvc
kjoooo 댓글 1 좋아요 0 조회수 427

회원 리포지토리 테스트 케이스 작성 강의 중 findByName() 질문

해결됨

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

"회원 리포지토리 테스트 케이스 작성" 강의 중 12분쯤 findByName()을 실행할 때 findAll()에서 만든 member1,member2가 불러와져서 테스트를 통과하지 못하고 하셨는데 이 부분이 이해가 잘 가지 않습니다. findByName()의 assertThat(result).isEqualTo(member1); 부분에서 예외가 발생합니다. 그런데 왜 첫번째 줄 Member member1 = new Member(); 에서 실행을 멈추지 않고 실행이 계속되나요? 이미 같은 변수이름(findAll()에서 만들어진 member1, member2)이 있음에도 불구하고 예외가 발생해야 맞는데 왜 정상적으로 실행되어서 assertThat(result).isEqualTo(member1); 까지 내려가서 예외가 발생하나요? findByName()의 assertThat(result).isEqualTo(member1); 가 각각 어떤 객체인지 헷갈립니다. member1은 findAll()에서 만들어진 것이고, result는 findByName()의 첫번째 줄에서 만들어진건가요? 이것도 이해가 가지 않는게 clear()가 없는 상태에서 member1을 또 만들면 이름이 중복되는데 왜 예외가 발생하지 않나요?? package hello.hellospring.repository; class MemoryMemberRepositoryTest { MemoryMemberRepository repository = new MemoryMemberRepository(); @Test public void findByName() { Member member1 = new Member(); member1.setName("spring1"); repository.save(member1); Member member2 = new Member(); member2.setName("spring2"); repository.save(member2); Member result = repository.findByName("spring1").get(); assertThat(result).isEqualTo(member1); } @Test public void findAll() { Member member1 = new Member(); member1.setName("spring1"); repository.save(member1); Member member2 = new Member(); member2.setName("spring2"); repository.save(member2); List<Member> result = repository.findAll(); assertThat(result.size()).isEqualTo(2); } } 그리고 memberService.join(member1); package hello.hellospring.service; class MemberServiceTest { MemberService memberService = new MemberService(); @Test void 회원가입() { //given Member member = new Member(); member.setName("spring"); //when Long saveId = memberService.join(member); //then Member findMember = memberService.findOne(saveId).get(); assertThat(member.getName()).isEqualTo(findMember.getName()); } @Test public void 중복_회원_예외() { //given Member member1 = new Member(); member1.setName("spring"); Member member2 = new Member(); member2.setName("spring"); //when memberService.join(member1); IllegalStateException e = assertThrows(IllegalStateException.class, () -> memberService.join(member2)); assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다."); } } 회원 서비스 테스트 강의에서도 비슷한 질문이 있습니다. 11분 50초 경에 memberService.join(member1);에서 예외가 발생한다고 하셨는데 그 이유를 잘 모르겠습니다. member1, member2의 이름을 spring으로 만들고나서 member1을 join할 때는 레포지토리에 아무런 값이 없으므로 예외가 발생할 이유가 있나요? 오히려 assertThrows(IllegalStateException.class, () -> memberService.join(member2)); 에서 중복으로 인해 예외가 발생해야하지 않나요?

  • java
  • spring
  • mvc
  • spring-boot
liltjay 댓글 2 좋아요 1 조회수 285

V5 save에서 500오류

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 회원 가입 페이지와 회원목록은 잘 나오는데 save에서 계속 500 오류가 뜨네요 ㅠㅠ 강의랑 똑같이 따라친거같은데 왜 오류가 발생하는지 모르겠습니다.오류코드는 이렇게 뜹니다. 2024-01-11T19:21:07.392+09:00 ERROR 31571 --- [nio-8080-exec-2] a.c.c.C.[.[.[.[frontControolerServletV5] : Servlet.service() for servlet [frontControolerServletV5] in context with path [] threw exception

  • spring
  • mvc
냠냠 댓글 5 좋아요 0 조회수 713

인기 태그

인프런 TOP Writers

주간 인기글