묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Member 에러
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. MemeberRepository.java에서 Member save(Member member); 를 입력하면 Member에 에러가 뜹니다영한님도 강의 중에 에러가 뜨셨는데 빠르게 고치시더라구요뭘 고치셨는지 알려주시면 감사하겠습니다!! import class를 눌러봤는데 import java.lang.reflect.Member;가 위에 입력되면 에러가 해결되긴 하더라구요근데 강의와 코드가 다른데 괜찮나요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
localhost:8080/hello가 whitelabel error가 떠요
View 환경설정 강의 그대로 폴더를 만들었는데 localhost:8080/hello를 하면 화이트라벨 에러가 나오고, localhost:8080만 치면 강의에서 /hello 붙인 결과 페이지랑 똑같이 나오는데 어디가 문제인지 모르겠어요.ㅜㅜㅜㅜ
-
해결됨스프링 프레임워크는 내 손에 [스프1탄]
회원테이블과 권한테이블 간 관계
선생님 안녕하세요. 회원테이블과 권한테이블 간 관계 질문드립니다.회원 1명이 사용자, 매니저, 관리자 중 여러 권한을 가질 수 있으니, 회원테이블과 권한테이블 간 관계는 '1대다'의 관계인가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
예외처리가 된 건가요? 아님 에러인가요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요.package hello.hellospring.service; import hello.hellospring.domain.Member; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import java.util.Optional; import static org.assertj.core.api.AssertionsForClassTypes.assertThat; import static org.junit.jupiter.api.Assertions.*; class MemberServiceTest { MemberService memberService = new MemberService(); @Test void join() { //given Member member = new Member(); member.setName("hello"); //when Long saveId = memberService.join(member); //then Member findMember = memberService.findOne(saveId).get(); Assertions.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); try { memberService.join(member2); fail(); } catch (IllegalAccessError e) { //예외가 터져서 정상적으로 성공한 것 assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다."); } //then } @Test void findMembers() { } @Test void findOne() { } } java.lang.IllegalStateException: 이미 존재하는 회원입니다. at hello.hellospring.service.MemberService.lambda$validateDuplicateMember$0(MemberService.java:26) at java.base/java.util.Optional.ifPresent(Optional.java:178) at hello.hellospring.service.MemberService.validateDuplicateMember(MemberService.java:25) at hello.hellospring.service.MemberService.join(MemberService.java:18) at hello.hellospring.service.MemberServiceTest.중복_회원_예외(MemberServiceTest.java:45) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) Process finished with exit code -1 이렇게 빨간 느낌표가 뜨면 테스트 자체가 잘못된다는 건가요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
logging.level.hello.itemserivce.repository.mybatis=trace 로깅레벨적용
강의 후반에 logging level 을 trace로 하여 확인하는데 무슨 문제인지 확인이 되지 않네요.. debug까지만 먹히고 trace는 먹히지 않습니다.
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
트랜잭션 궁금증
@Transactional public void writeDelete(int id) { writeRepository.deleteById(id); } //위에는 서비스 계층입니다 아래는 데이터 접근 계층입니다 public void deleteById(int id) { try { String sql = "delete table member where id=?"; template.update(sql, id); sql="aaaa"; template.update(sql); } catch (DataAccessException e) { throw new RuntimeException(e); } }Q. 이상태에서 실행해봤는데 왜 롤백이 안될까요?? 테스트 코드에서 실행한건 아닙니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
포스트매핑은
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기서 print가 되는것은 제가 등록버튼을 눌렀을 때 되더라구요 postmapping은 등록하는 경우에 실행되게 해주는 것 맞나요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
servlet에 대해 제 생각을 한번 정리해봤습니다
강의를 듣고 다른분들도 그렇고 저도 그렇고 이해가 안가는 부분이 있어서 다른분들도 보고 이해할수있도록 최대한 자세하고 쉽게 정리해봤는데 ,맞게 이해했을까요?주제는 -servlet의 동작원리-spring container는 어떻게 생성이되었는지-dispatcherservlet가 singleton으로 관리된다고했는데 그러면 spring container와 어떤연관이있는지 -servlet 동작원리1.web brower에서 요청을받고 web server에 넘겨준다음 WAS에 web server에 넘겨주어 servlet container에 service()가 요청을 처리하고 was의 web server에서 반환을 해주어 응답을 해준다 -spring container의 생성과정1.web application을 실행하면 spring boot에서는 web.xml파일을 생성하고 web.xml파일안에 큰 틀에서 보자면 <param>~</param>부분은 root webapplicationcontext로 <servlet>~</servlet>부분은 web applicationcontext로 나뉘게 되는데 그 이유는 2-layered 아키텍쳐로 presentation Layer와 business Layer로 나뉘어서 개발하게 되기때문이다.2.web.xml파일에 ContextLoderListenr가 applicationcontext.xml 또는 root.xml을 로딩하여 applicationcontext(=spring container)를 만들고 1번에서 언급한 business layer에 필요한 DAO 등 설정을 함으로써 applicationcontext를 생성한다.여러정보를 찾아볼때 xml으로만 tomcat이 구현될때 servlet context와 application context가 생성이 되는줄알았는데 spring boot 3.0? 이상부터 WebApplicationInitializer구현 + AnnotationConfigWebApplicationContext 으로 지원한다고 하여 spring container의 생성과정도 맞지만 더 최신버전으로도 설명하겠습니다. public class WebInitializer implements WebApplicationInitializer{ @Override public void onStartup(ServletContext servletContext) throws ServletException { ... AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext(); context.setConfigLocation("com.studyspring.basic.config"); ServletRegistration.Dynamic dispatcher = servletContext.addServlet("DispatcherServlet", new DispatcherServlet(context)); dispatcher.setLoadOnStartup(1); dispatcher.addMapping("/"); ... ... } }1)톰캣을 실행하면 servlet context를 초기화하고 생성해야하는데 tomcat을 실행하면 tomcat이 webapplicationinitializer를 구현한 클래스를 먼저 찾게됩니다. 2)찾고나서 onStartup메소드를 실행하여 Annotationconfigwebapplicationcontext를 통해 applicationcontext를 만들게됩니다. -dispatcherservlet의 생성과정dispatcherservlet같은경우 servlet context가 생성되는 시점(=생성되는 시점도 lazy loading과 pre loading에 따라 달라집니다)에 만들어집니다.(dispatcherservlet은 궁극적으로 servlet이며, servlet은 동적 웹페이지를 만들때 사용되는 웹 프로그래밍 기술입니다. 이모양은 우리가 spring mvc에서 똑같이 볼수있었고 영한님 강의에서도 servlet로 spring mvc를 구현했었습니다. 하지만 하나하나 구현하기에는 어려움이 많았고 이걸 spring boot에서는 간편하게 지원해주기 때문에 spring은 곧 servlet를 쓰기위한 하나의 servlet로 이해할수있습니다. ) -bean은 도대체 왜 나왔으며 servlet container와 spring container는 다른건데 어떻게 쓰이지?위에 코드를 보면 Dynamic dispatcher = servletcontext... 이라고 선언된 부분이 있을텐데 dispatcher은 결국 servlet이고 servlet container에서 관리하는 객체입니다. 저문장의 뜻은 dispatcher을 context(=servlet container)에서 사용하기위해 등록한다는 의미이며 servlet container에서 dispathcerservlet를 spring container에게 보내주어 spring container에서 spring boot가 편리하게제공해주는 기능을 바탕으로 rendering을 한후 다시 return을 해서 dispathcerservlet는 servlet container에 속해있으므로 servlet container가 client에게 view를 보여줍니다. 결국, dispathcerservlet이 spring container에게 보내주어 bean으로 등록되어 spring container가 관리하는 객체가 되고, 결국 싱글톤으로 관리가되며 servlet이 올때마다 같은 인스턴스를 가지고있는 객체로 인식되어 재사용이 가능한 상태로 남게됩니다. 최종적으로 지금까지한 설명을 그림에 빗대어서 마무리하겠습니다. 처음에 설명했던 servlet webapplicationcontext와 root webapplicationcontext는 2-layer 아키텍처로 구현된 모습이며 철저히 구현과 역할이 나누어져있습니다. dispatchersevlet은 spring container가 생성이되고 servlet container에서 사용할수있게 만들어졌고 그로인해 접근이 가능하다. 한객체의 레퍼런스를 두개의 컨테이너에서 들고있어도 문제가 없다는것을 알게되었습니다. 정리후 저의 개인적인 질문입니다!spring container에서 생성이되고 servelt container에서 사용이 됩니다. 하지만 dispatcher servlet은 궁극적으로 servlet이고 관리가 되는 컨테이너는 servlet container라고 생각이되었습니다. 하지만 dispatcher servlet은 싱글톤으로 관리가 되고 인스턴스를 공유할수있다는점에서 spring container와 연관이 있지않나라는 생각도 들었습니다. destory()라는 메소드를 가지고있고 외부에서도 소멸될수있어서 dispatcher servlet이 어떤 container에서 관리가 되는지 궁금합니다
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
타임리프 태그??
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]<html lang="en">로 해도 정상실행이 되는데 했을 때와 차이는 무엇인가요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
프론트 컨트롤러 생성자는 한번만 실행되는게 맞나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 프론트 컨트롤러에 컨트롤러를 new해주어 객체를 생성하였는데 FrontControllerServletV1() 이라는 생성자가 서블릿 컨테이너에 서블릿이 등록되기 위해 호출되는 것이 맞나요?맞다면 이 생성자는 서블릿을 등록할 때, 딱 한 번만 실행되는건가요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
hello와 hello-static.html 의 차이
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 주소창에 입력할 때static 폴더에 있는 hello-static과 index는 확장자 (.html)을 붙여야 하고templates 폴더에 있는 hello는 .html을 붙이면 안되는? 걸로 알고 있는데 이유가 궁금합니다! hello는 th: 문법을 사용해서 그런건가요? 확실하게 이유를 알고 싶습니다 ㅎㅎ
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
pdf 파일 교재
pdf 파일 교재는 어디에 있는지요?
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
test case 작성 후 test시 콘솔에 접근하여 실제 테이블을 확인하는 방법
인메모리 방식을 사용해 h2 db를 이용하는 방법을 알겠습니다. spring.datasource.url=jdbc:h2:tcp://localhost/~/testcase위와 같이 기존에는 tcp 방식으로 서버에 접근하여 h2 db 상태를 직접 확인가능하였는데요. 위의 코드를 생략하면 스프링 부트가 임베디드 데이터베이스에 대한 설정도 기본으로 제공하여 인메모리 방식인 임베디드 데이터베이스를 를 사용하는 것 까진 알겠습니다. 그런데 만약 기존 처럼 콘솔에 직접 진입하여 table의 데이터를 눈으로 확인하고 싶을땐 어떻게 해야할까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
http://localhost:8080/hello-mvc?name=spring
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]spring이 아니라 여전히 hello spring이 나오는 이유가 뭘까요??
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
ModelAndView 요청과 응답 질문 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.이 부분의 강의는 HTTP 응답 - 정적 리소스,뷰 템플릿에 관한 내용입니다. 질문 1번강사님께서 올려 주신 responseViewV1의 함수를 아래와 같은 작동 방식으로 이해를 했는데 옳게 이해한 것이 맞나요?1.클라이언트가 /response-view-v1의 url에 접근해서 요청을 함2.서버가 responseViewV1의 메소드를 실행하면서 작성된 비지니스 로직을 수행함3.ModelAndView의 파라미터 중viewName : 요청을 받고 응답 결과를 되돌려주는 url attributeName : 응답 결과를 보내는 변수명attributeValue : 응답 결과 return mav; => ModelAndView를 return 하면 스프링이 알아서 view와 model을 분류해서 필요한 곳에 값을 넣음 질문 2번요청과 응답이라는 개념이 잘 이해가 안됩니다.아래의 그림과 같이 클라이언트가 요청을 하면WAS에서 비지니스 로직을 수행하고 요청에 맞는응답을 하는 것으로 이해를 했습니다.근데 강사님께서 작성하신 responseViewV1의 경우에는/response-view-v1이라는 url로 접속한 것이 "요청"이고return mav; 가 "응답"이 되는건가요?설명 부탁드립니다.
-
해결됨스프링 DB 1편 - 데이터 접근 핵심 원리
ThreadLocal 관련해서 궁금한사항이 있습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요?예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]커넥션풀 사용 상황에선쓰레드 로컬을 사용해서 커넥션을 동기화 해준다고 했는데 그러면 생성하게되면 일반적으로 쓰레드 갯수와 커넥션 갯수가 일치하거나 혹은 쓰레드갯수가 더많다 라고 이해하면될까요?
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
트랜잭션 매니저 관련해서 궁금한사항이있습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요?예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]만약에 트랜잭션 매니저를 본인이 직접만든다고했을때엔 빈 스코프 단위를 웹스코프 단위로 보통 설정하나요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
Jar파일로 배포시 DB문제 도와주세요...
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]Mybatis 를 사용한 강의속 프로젝트를 만들어서 인텔리제이 에서 서버를 열면 모든게 정상적으로 잘 작동합니다 (DB연결도 잘됩니다)그런데 이 프로젝트를 bootjar로 jar파일 만들어서 같은 로컬컴퓨터에서 실행을 시키면 서버가 열리고 접속까지 잘 되는데 db연결이 필요한 부분만 들어가면 오류가 납니다 (로그에는 실행돼야할 mapper.xml을 찾을수없다고 나옵니다)-ERROR 16064 --- [nio-8080-exec-4] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): shop.mapper.LoginMapper.selectMember] with root cause위 코드처럼 오류가 나는데 그래서 jar파일내에 해당 mapper.xml과 해당 메서드가 연결된 인터페이스가 잘 들어있나 확인해도 잘 들어가있습니다. 뭐가 잘못된 걸까요?? 며칠째 너무 고통스럽네요..ㅠ
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원 서비스 테스트 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]섹션 3 중 회원 서비스 테스트 질문입니다.10분 정도에서 진행한 중복_회원_예외() 메서드에서 다음과 같은 코드를 입력했는데package com.example.hellospring.service; import com.example.hellospring.domain.Member; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.*; import static org.junit.jupiter.api.Assertions.*; class MemberServiceTest { MemberService memberService = new MemberService(); @Test void 회원가입() { //given Member member = new Member(); member.setName("hello"); //when Long saveId = memberService.join(member); //then Member findMember = memberService.findOne(saveId).get(); Assertions.assertThat(member.getName()).isEqualTo(findMember.getName()); } @Test public void 중복_회원_예외() { //given Member member1 = new Member(); member1.setName("spring"); Member member2 = new Member(); member2.setName("spring2"); memberService.join(member1); IllegalStateException e = assertThrows(IllegalStateException.class, () -> memberService.join(member2)); assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다"); /*try { memberService.join(member2); fail(); } catch (IllegalStateException e) { assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다."); }*/ } @Test void findMembers() { } @Test void findOne() { } }전 강사님과 다르게 초록 불이 안 뜨고 에러가 떴습니다. 라이브러리 설정을 안해줘서 다음과 같은 에러가 뜬 건가요? org.opentest4j.AssertionFailedError: Expected java.lang.IllegalStateException to be thrown, but nothing was thrown.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
인터페이스의 사용 목적과 객체
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]ControllerV1 controller = controllerMap.get(requestURI);key 에 매핑되어있는 구체적 형태의 컨트롤러를 ControllerV1 타입으로 controller 에 담고해당 컨트롤러로 이동하는 메서드가 controller.process(request, response) 라면 왜 controllerMap.get(requestURI).process(request, response) 가 될 수 없는지 궁금합니다.이미 new로 인스턴스가 생성된 상황일텐데 왜 ControllerV1 타입으로 옮겨담는건가요?MemberFormControllerV1.java 가 implements ControllerV1 를 상속받으니 반드시 ControllerV1 타입으로 만들어줘야 하는것인가요?여기서 인터페이스의 사용 목적은 중복되는 코드를 줄이기 위함인가요? 이해가 부족해서 죄송합니다 ㅠ 인터페이스의 사용목적이 이해가 잘 가지 않습니다 ㅠ