묻고 답해요
150만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
순위 정보를
불러오고 있어요
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
generate
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.강의와 달리 메서드가 안 나오더군요하나씩 따라서 치고있는데 구글링해도검색을 잘 못해서 그런지 안 나오더라고요단축키도 똑같이 맞춰둔 상태입니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
gradlew build test 오류
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]java -version에서 21인거 확인했고환경변수,path 설정도 제대로 된것 확인하였습니다.인텔리제이에서 tool 설정에서 실행이 인텔리제이로 되어있는것도 확인했습니다 근데 왜 자꾸 test부분에서 오류가 나는지 모르겠습니다.혹시 build.gradle 파일 안에 junit 부분이 인텔리제이에서 밑줄 쳐진것처럼 이상하게 보이긴 했는데 거기가 문제인걸까요?gradlew 까지는 잘 실행되는데gradlew build를 입력하면 항상 실패합니다.https://drive.google.com/file/d/1H2-IATqwNphgZoDcjcEQXkbAmcfELT8D/view?usp=sharinghello-spring이 들어있는 zip 입니다.
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
안녕하세요 이것이 내부호출 예제가 맞는지 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]// 인증 번호 확인@Transactionalpublic void confirmAuthenticationInfo(AuthenticationRequest.Confirm request){MemberCertificationHistory history = findById... // 엔티티 조회...validateExpiration(history);...}// 만료 일시 검증@Transactionalprivate void validateExpiration(MemberCertificationHistory history){if(history.isExpired()){processExpiration(history); // 만료 처리 . 트랜잭션 분리throw new ServerException("만료됨"...);}}// 인증 정보 만료 처리@Transactional(propagation = Propagation.REQUIRES_NEW)private void processExpiration(MemberCertificationHistory history){history.getMemberCertificationInfo().processExpiration();memberCertHisRepository.save(history); // 엔티티 저장}안녕하세요 위 코드에서 궁금한점이 있는데 내부호출에 관한 내용인지 질문드립니다.간단하게 confirmAuthentication() , validateExpiration() , processExpiration() 3가지 메서드가 있는상황이구, 차례로 호출하며 validateExpiration()에서 throw를 던지는 상황입니다. 문제는validateExpiration()를 내부에서 트랜잭션이 분리 처리(REQUIRES_NEW)되어 있는 processExpiration()를 타게되고, processExpiration()는 분리된 트랜잭션이니 .save()를 통해 저장이되고, 다시 validateExpiration()으로 돌아와 throw를 처리하게 되어 processExpiration()에서 저장된것은 롤백되지 않을것으로 예상하였습니다. 그런데 로그를보니 insert쿼리도 나가지 않고, 따로 롤백에 관한 내용도 찍히지 않았습니다.따라서 내부호출이 된건가 생각을해보니 제가 아는 내부호출이라는 문제는동일한 클래스에서 트랜잭션이 적용되지 않은 메서드에서 트랜잭션이 적용된 메서드 호출시 내부 호출이 발생하는걸로 알고있는데 위 예제에선 이미 최상위 메서드에서 트랜잭션이 적용되어 있는상태인데 따로 생성된 트랜잭션이 실행되지 않아서 혹시 이건 내부호출 문제가 맞는것인지, 아니면 다른 제가 간과한것이 있는지 궁금하여 질문드립니다 .
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
숫자입력 시 int 형 범위가 넘어가는 경우
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]안녕하세요 !! 영한님 강의로 열심히 공부하고 있는 한 사람입니다.수량 입력할 때, 1111111111(11개) 를 입력했을 때, "숫자를 입력해주세요" 라는 오류 메시지가 뜨더라구요.그래서 혹시 int 형 범위 문제인가 싶어서2147483648(int 형 최대 범위 숫자 " + 1")를 넣어보니, 다시 "숫자를 입력해주세요" 오류 메시지가 나왔습니다. 따라서 int 형 범위를 넘어선 long 형 범위에 들어가면 숫자가 아니라고 판단하는 것 같더라구요.사용자 입장에서 int 형 범위든 long 형 범위든 숫자를 입력한 건 맞는 사실이기에, 기존에 int 형 범위 숫자만 숫자로 인식하는 것이 아닌, long 형 범위에서도 숫자로 인식하여 "숫자를 입력해주세요" 라는 오류 메시지가 발생하지 않으려면 어떻게 해야하나요 ??
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
FrontControllerServletV2의 service 메소드 동작원리 질문
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.FrontControllerServletV2의 service 메소드를 보면 마지막 두 줄에 MyView view = controller.process(request, response); view.render(request, response);첫번째 줄에는 viewpath만 가지고 있는 객체라고 생각이 되는데두번째 줄에서 render의 매개변수로 사용되는 request, response 두가지는 어디서 나온건지 궁금합니다.제가 이해 하기론 예를들어 회원 저장시 FrontControllerServletV2가 requestURI변수에 "/front-controller/v2/members/save" 를 받아오고 controller는 controllerMap.get(requestURI)로 인해 MemberSaveControllerV2객체를 담습니다.MemberSaveControllerV2가 오버라이딩한 process는 @Override public MyView process(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); int age = Integer.parseInt(request.getParameter("age")); Member member = new Member(username, age); memberRepository.save(member); request.setAttribute("member", member); return new MyView("/WEB-INF/views/save-result.jsp"); }저장로직을 실행한 후 request.setAttribute를 통해 (명칭이 기억안납니다) 저장한 후 "/WEB-INF/views/save-result.jsp"를 viewpath로 갖는 MyView객체를 반환하고 이 객체가 FrontControllerServletV2의 view변수에 저장되는데 request와 response는 전달 받지 않았음에도 어떻게 render메소드를 실행하는지 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
H2 DB 로그인 오류
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]오류 내용: 로그인 시도 시 Wrong user name or password라고 뜹니다. (Wrong user name or password [28000-232] 28000/28000)스프링부트 버전: 3.4.2H2 버전: 2.3.232build.gradledependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' testImplementation 'org.springframework.boot:spring-boot-starter-test' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' implementation 'org.springframework.boot:spring-boot-starter-jdbc' runtimeOnly 'com.h2database:h2' }application.propertiesspring.application.name=hello-spring spring.datasource.url=jdbc:h2:tcp://localhost/~/test spring.datasource.driver-class-name=org.h2.Driver spring.datasource.username=sa 버전에 알맞게 h2를 설치한 후, 윈도우 환경에서 h2.bat를 실행했습니다.강의자료를 보며 추가해야 할 코드를 다 추가한 것 같은데, 로그인이 되지 않고 무엇이 문제인지 모르겠습니다.또, 새로고침 시에 사용자명이 기본적으로 sa가 아니라 계속 admin으로 표시됩니다. (로그인할 때는 sa로 바꿔 로그인 시도했습니다.)
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
thyme leaf 관련 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]thymeleaf를 사용해서 표를 만들려고 합니다.상품명 | 과세/면세 | 구매처1 | 구매링크1 | 구매처2 | 구매링크2 ....아이폰 | 과세 | 쿠팡 | coupang.com.... | 네이버 | naver.com.....이런식으로 작성하려고 합니다.우선 Controller에서 thymeleaf 로 넘기는거까지는 했는데구매처 리스트에서 상품명 별 제일 많은 구매처 객체 개수에 맞게 제목을 구매처N 까지 늘려서 만들고 싶은데 방법이 있을까요??
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
PathVariable에 Null이 들어오는 것 같습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 네3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 네[질문 내용]여기에 질문 내용을 남겨주세요.상품 수정하기를 눌렀을 때 에러코드 500이 나오고 IllegalArgumentException: Input cannot be null 에러가 나옵니다.PathVariable("itemId")로 명시적으로 지정해 주었는데도 null이 들어가는 것 같은데 해결을 못하겠습니다. 코드는 원래 파일에서 건든 것이 없고 심지어 강의 자료에 있는 코드 파일 그대로 복사 붙여넣기 해도 똑같은 에러가 나옵니다..
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
.ifPresent 사용법
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]멤버 삭제 기능을 만들려고 하는데 이렇게 하는게 맞을까요?한개의 멤버만 받아서 삭제하고 싶은데 어떻게 처리해야 할까요? public boolean deleteProduct(String productName){ List<Product> result = em.createQuery("select p from Product p where p.productName = :productName", Product.class) .setParameter("productName", productName) .getResultList(); return true; } getResultList 로 하니까 여러개 나올거 같은데 한개만 삭제하려면 어떻게 해야 하나요? 그리고 em.remove하면 되나요?
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
강의 14분쯤 Exception 질문
[질문 내용]안녕하세요. 강의 14분쯤에,@Test 부분에서 .isInstanceOf(SQLException.class)를 했을 때, 테스트가 성공하는 이유가 궁금합니다.저는 ConnectException과 SQLException이 서로 관련이 없는 Exception이기 때문에 테스트가 실패해야 한다고 생각했습니다.혹시 Service의 logic()에서 repository.call()이 호출 될 때 SQLException이 터지고, 그로 인해서 networkClient.call()은 실행되지 않고 끝나기 때문에 테스트가 성공하는건가요?
-
미해결자바 스프링 프레임워크(renew ver.) - 신입 프로그래머를 위한 강좌
spring mvc project 안뜸...
우선, 강의 정말 잘 듣고 있습니다. 독학하는 저에게 큰 도움이 되네요. 좋은 강의 감사합니다.강의를 보며 실습을 진행하던 도중, 여러가지 에러들이 있었지만, 구글링을 통해 해결하였습니다.근데 이건 도저히 해결이 안되네요...spring legacy project에서 MVC 프로젝트가 나타나지 않습니다.eclipse, java 둘다 재설치도 해보았고, spring tools도 재설치 해보았습니다. 재설치한 자바입니다.eclipse는 2025-03이고tomcat은 v8.5 입니다.
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
스프링 DB2편 강의 듣는 JPAQueryFactory에러
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오예알려주신대로 그리고 강의파일에 있는대로 buil.gradle파이 ㄹ옵션도 따라했는데 에러가 발생합니다방법을 알려주세요 매번 강의를 들을 때마다 강의보다 설정하는데 시간이 너무 오래 걸리고 힘듭니다 도와주세요
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Springdatamemberrepository
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요혹시 강사님 코드를 복붙해도 이상태인데 왜 이러는걸까요ㅠㅠ 저 springdpa말고는 다 작동 되었습니다!.
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
memberId 맴버변수를 String 으로 잡은 이유
도메인의 Member 클래스 의 memberId 맴벼변수 타입이 String인 이유가 궁금합니다 jbdc에 대표 id 등록은 숫자형 타입이 아닌 문자형으로 해야 하는지 궁금합니다
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
saveAll() 내부에 save()도 내부호출인 건가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]그 트랜잭션 전파에 대해서 공부하다가 궁금증이 생겼는데JpaRepository의 구현체인 SimpleJpaRepository에서 saveAll() 메서드도 내부에서 save()메서드를 호출하잖아요?그러면 이때 호출되는 save()메서드도 내부호출이니까 @Transactional이 적용이 안되는 건가요?풀어서 말하자면saveAll()이 호출될때 @Transactional로 트랜잭션이 시작됨saveAll() 내부에서 save() 메서드를 호출하지만 내부호출이므로 트랜잭션 전파가 아닌 그냥 save()메서드가 호출됨결과적으로는 트랜잭션이 saveAll() 호출시 하나만 시작되고 save()들은 내부호출이므로 트랜잭션 전파를 받는것이아닌 saveAll()이 호출될때 시작된 트랜잭션을 따름위와 같이 이해하는게 맞을까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
트랜잭션 질문드립니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]8:55분 즈음부터 말씀하시는 내용이 DB에 쿼리까지 다 날려서 회원가입도 되고 뭐 아이디 찾기, 멤버 찾기 등 다 되고 마지막에 테스트가 끝나면 데이터를 롤백한다고 하셨는데요.(정확히는 반영을 안함). 그래서 실제로 테스트 실행을 해보면 정상적으로 동작했다는 뜻에서 Run 창에 모두 초록불로 들어와있지만 DB에서는 아무것도 반영안되어있는게 보이는데요, 그럼 실제로 테스트 할때도 DB에는 들어갔는지 실물확인은 못한채, Run창에서 초록불로 정상적으로 동작했다는 것으로만 확인을 해야하나요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
ModelView를 ViewModel이라고 이해해도 될까요?(feat.iOS 개발자)
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요. iOS 개발을 오래하다가 BE 개발 공부를 시작했습니다. iOS 개발을 하면서 MVC, MVVM 등 다양한 아키텍쳐 패턴을 사용했었는데 이번 강의에서 사용하시는 ModelView라는 건 마치 ViewModel과 같다는 생각이 들어서요!1) 현재 ModelView라고 쓰이는 객체는 흔히 말하는 ViewModel과 동일한 느낌으로 봐도 무방할까요?(ModelView는 ~View이기에 View로 보이는 한편, ViewModel ~Model이기에 Model로 느껴지는 듯합니다.)2) 혹 둘의 차이가 있다면 어떤 부분이 차이가 있을지도 궁금합니다!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
순수 JDBC 회원 목록 Whitelavel Error
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)아니오3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]비슷한 질문이 몇 개 올라와 있는데 해결되지 않아 질문합니다.H2에서 테이블 생성하고 데이터 insert한 후 서버에서 회원 목록을 클릭하면 Whitelabel Error가 뜹니다. 2025-03-17T22:19:31.466+09:00 ERROR 2315 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: java.lang.IllegalStateException: java.lang.IllegalArgumentException: No DataSource specified] with root causejava.lang.IllegalArgumentException: No DataSource specifiedat org.springframework.util.Assert.notNull(Assert.java:181) ~[spring-core-6.2.3.jar:6.2.3]at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:104) ~[spring-jdbc-6.2.3.jar:6.2.3]at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:81) ~[spring-jdbc-6.2.3.jar:6.2.3]at hello.hello_spring.repository.JdbcMemberRepository.getConnection(JdbcMemberRepository.java:119) ~[classes/:na]at hello.hello_spring.repository.JdbcMemberRepository.findAll(JdbcMemberRepository.java:77) ~[classes/:na]at hello.hello_spring.service.MemberService.findMembers(MemberService.java:42) ~[classes/:na]at hello.hello_spring.controller.MemberController.list(MemberController.java:40) ~[classes/:na]at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:257) ~[spring-web-6.2.3.jar:6.2.3]at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:190) ~[spring-web-6.2.3.jar:6.2.3]at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) ~[spring-webmvc-6.2.3.jar:6.2.3]at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:986) ~[spring-webmvc-6.2.3.jar:6.2.3]at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:891) ~[spring-webmvc-6.2.3.jar:6.2.3]at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-6.2.3.jar:6.2.3]at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1088) ~[spring-webmvc-6.2.3.jar:6.2.3]at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:978) ~[spring-webmvc-6.2.3.jar:6.2.3]at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) ~[spring-webmvc-6.2.3.jar:6.2.3]at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) ~[spring-webmvc-6.2.3.jar:6.2.3]at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) ~[tomcat-embed-core-10.1.36.jar:6.0]at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) ~[spring-webmvc-6.2.3.jar:6.2.3]at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) ~[tomcat-embed-core-10.1.36.jar:6.0]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195) ~[tomcat-embed-core-10.1.36.jar:10.1.36]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.36.jar:10.1.36]at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) ~[tomcat-embed-websocket-10.1.36.jar:10.1.36]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.36.jar:10.1.36]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.36.jar:10.1.36]at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-6.2.3.jar:6.2.3]at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.2.3.jar:6.2.3]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.36.jar:10.1.36]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.36.jar:10.1.36]at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-6.2.3.jar:6.2.3]at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.2.3.jar:6.2.3]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.36.jar:10.1.36]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.36.jar:10.1.36]at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-6.2.3.jar:6.2.3]at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.2.3.jar:6.2.3]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.36.jar:10.1.36]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.36.jar:10.1.36]at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) ~[tomcat-embed-core-10.1.36.jar:10.1.36]at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) ~[tomcat-embed-core-10.1.36.jar:10.1.36]at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483) ~[tomcat-embed-core-10.1.36.jar:10.1.36]at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115) ~[tomcat-embed-core-10.1.36.jar:10.1.36]at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) ~[tomcat-embed-core-10.1.36.jar:10.1.36]at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat-embed-core-10.1.36.jar:10.1.36]at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344) ~[tomcat-embed-core-10.1.36.jar:10.1.36]at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:397) ~[tomcat-embed-core-10.1.36.jar:10.1.36]at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-10.1.36.jar:10.1.36]at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:905) ~[tomcat-embed-core-10.1.36.jar:10.1.36]at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1743) ~[tomcat-embed-core-10.1.36.jar:10.1.36]at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-10.1.36.jar:10.1.36]at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190) ~[tomcat-embed-core-10.1.36.jar:10.1.36]at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-10.1.36.jar:10.1.36]at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) ~[tomcat-embed-core-10.1.36.jar:10.1.36]at java.base/java.lang.Thread.run(Thread.java:840) ~[na:na] application.properties에는spring.datasource.url = jdbc:h2:tcp://localhost/~/test spring.datasource.username=sa spring.datasource.password= spring.datasource.driver-class-name = org.h2.Driver으로 작성되어 있습니다.test.mv.db를 삭제하고 다시 실행해 테이블을 만들어도 똑같은 오류가 납니다 ㅜㅜ
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
exceptionResolver에서 null 반환
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/)[질문 내용] @Slf4jpublic class MyHandlerExceptionResolver implements HandlerExceptionResolver { @Override public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { try { if (ex instanceof IllegalArgumentException) { log.info("IllegalArgumentException resolver to 400"); response.sendError(HttpServletResponse.SC_BAD_REQUEST, ex.getMessage()); return new ModelAndView(); } } catch (IOException e) { log.error("resolver ex", e); } return null; }}만약 HandlerExceptionResolver에서 null을 반환하게 되면은.. 그러면 스프링 기본 로직인 basicErrorController에서 /error 를 호출해서 해결하게 되는 것이 아닌가요? basicErrorController를 거치지 않고 그냥 WAS로 예외가 던져지나요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
서블릿 예외 상태코드
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]API 예외 처리 - HandlerExceptionResolver 시작 강의에서,"예외가 발생해서 서블릿을 넘어 WAS까지 예외가 전달되면 HTTP 상태코드가 500으로 처리된다." 라고 하셨는데예외가 만약 RuntimeException 과 같은 경우면 500에러로 반환 되는 것인가요?근데 만약 상태코드가 지정된 예외라면.. (ex. sendError(404) 라면 어떻게 되나요? 이 경우는 404 에러로 리턴되지 않나요?
주간 인기글
순위 정보를
불러오고 있어요