묻고 답해요
130만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Repository Test에 관해서 질문 드립니다.
강의 다 보고 코드 복습하고 있는데 Repository 테스트를 진행한 걸 보고 의문점이 들었습니다.처음에 Jdbc, Jpa 등 DB 연결을 하지 않았을 때는 아래처럼 메소드 구현하고 테스트 한 것으로 이해했습니다.(1) DB와 연동되어있지 않은 클래스 테스트 (in-memory-database(IMDB))MemberRepository -> MemoryMemberRepository 구현 -> MemoryMemberRepositoryTest 테스트그렇다면 만약 Jpa를 구현하게 된다면 어떻게 테스트를 진행해야 할지 궁금합니다.Jpa를 사용하는 Repository인 경우 별개로 IMDB에서만 단위/통합 테스트를 진행하는 것이 좋을까요? 테스트를 어떻게 해야할지 생각해봤는데 (1), (2) 둘 중에 어느 방안으로 진행해야 할까요?(2) Jpa로 구현되어있는 클래스 테스트MemberRepository -> JpaMemberRepository 구현 -> JpaMemberRepositoryTest 테스트 그리고 Repository로 단위 테스트 진행 후, 통합 테스트도 진행이 필요한지 궁금합니다.
-
미해결[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발
spring boot 3.0 이후 handleMethodArgumentNotValid 메소드
안녕하세요 강사님좋은 강의 감사드립니다. 스프링부트 3.0 이후부터는 오버라이딩한 handleMethodArgumentNotValid 메소드를 타지 않아 강의에서처럼 동작을 하지 않습니다.다음과 같이 코드를 짜도 에러가 나면서 서버가 죽어버리는데 어떻게 해야 되나요? @ExceptionHandler(BindException.class) public final ResponseEntity<Object> handleMethodArgumentNotValidException(BindException ex) { ExceptionResponse exceptionResponse = new ExceptionResponse(LocalDateTime.now(), ex.getMessage() , ex.getBindingResult().toString()); // 클라이언트에게 상세정보 안보여주도록 false return new ResponseEntity<>(exceptionResponse, HttpStatus.NOT_FOUND); }에러 내용Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.web.servlet.HandlerExceptionResolver]: Factory method 'handlerExceptionResolver' threw exception with message: Ambiguous @ExceptionHandler method mapped for [class org.springframework.validation.BindException]: {public final org.springframework.http.ResponseEntity com.example.myrestfulservice.exception.CustomizedResponseEntityExceptionHandler.handleMethodArgumentNotValidException(org.springframework.validation.BindException), public final org.springframework.http.ResponseEntity org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler.handleException(java.lang.Exception,org.springframework.web.context.request.WebRequest) throws java.lang.Exception} at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:177) ~[spring-beans-6.1.5.jar:6.1.5] at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:644) ~[spring-beans-6.1.5.jar:6.1.5] ... 24 common frames omitted Caused by: java.lang.IllegalStateException: Ambiguous @ExceptionHandler method mapped for [class org.springframework.validation.BindException]: {public final org.springframework.http.ResponseEntity com.example.myrestfulservice.exception.CustomizedResponseEntityExceptionHandler.handleMethodArgumentNotValidException(org.springframework.validation.BindException), public final org.springframework.http.ResponseEntity org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler.handleException(java.lang.Exception,org.springframework.web.context.request.WebRequest) throws java.lang.Exception} at org.springframework.web.method.annotation.ExceptionHandlerMethodResolver.addExceptionMapping(ExceptionHandlerMethodResolver.java:114) ~[spring-web-6.1.5.jar:6.1.5] at org.springframework.web.method.annotation.ExceptionHandlerMethodResolver.<init>(ExceptionHandlerMethodResolver.java:78) ~[spring-web-6.1.5.jar:6.1.5] at org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver.initExceptionHandlerAdviceCache(ExceptionHandlerExceptionResolver.java:289) ~[spring-webmvc-6.1.5.jar:6.1.5] at org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver.afterPropertiesSet(ExceptionHandlerExceptionResolver.java:256) ~[spring-webmvc-6.1.5.jar:6.1.5] at org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.addDefaultHandlerExceptionResolvers(WebMvcConfigurationSupport.java:1063) ~[spring-webmvc-6.1.5.jar:6.1.5] at org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.handlerExceptionResolver(WebMvcConfigurationSupport.java:1005) ~[spring-webmvc-6.1.5.jar:6.1.5] 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:568) ~[na:na] at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:140) ~[spring-beans-6.1.5.jar:6.1.5] ... 25 common frames omitted
-
미해결스프링 배치
연속적이지 않은 Id의 Partitioner
안녕하세요.partitioner 강의를 듣다가 스프링 배치에서 제공하는 샘플 ColumnRangePartitioner을 확인했습니다.해당 파티셔너의 경우 연속적인 Id일 경우에는 파티션에 균등하게 분배를 할 수 있을텐데요. 중간에 삭제된 아이디가 있을 때는 어떻게 해야 균등하게 분배를 할 수 있을까요?[1, 2, 5, 7, 10, 11, 12, 13, 15, 17, 19, 20] ColumnRangePartitioner를 사용했을 때 파티션[1, 2, 5], [7, 10], [11, 12, 13, 15], [17, 19, 20] 균등하게 분배되는 파티션[1, 2, 5], [7, 10, 11], [12, 13, 15], [17, 19, 20] 아니면 ColumnRangePartitioner을 사용하고 어느정도 균등하게 분배되는거는 포기하고 사용해야할지 의견이 궁급합니다
-
해결됨스프링 배치
ItemReader에서 chunkSize의 두 사용 방법 비교
안녕하세요~ 강의 잘 들었습니다!다름이 아니라 ItemReader를 구현하는 과정에서 궁금한 게 생겨 질문드립니다.상황 1)chunkSize가 2000이면서 ItemReader에서는 1개의 row만 DB로부터 읽어 1개의 객체씩 반환하는 ItemReader상황 2)chunkSize가 1이면서 ItemReader에서는 2000개의 row를 DB로부터 읽어 2000개의 객체가 포함된 1개의 List 객체를 반환하는 ItemReader두 상황 다 DB커넥션은 1번만 맺고 쿼리를 실행할 것 같긴 한데DB 입장에서는 둘 중 어느 상황을 더 빨리 처리할지,또 코드 상으로는 둘 중 어느 방식으로 구현하는 게 유지보수나 외 측면에서 좋을지,또 어느 방식으로 ItemReader를 구현해야 성능 상 더 좋을지 궁금합니다!
-
미해결스프링 부트 - 핵심 원리와 활용
왜 강의에서 웹서버라고 말씀하신건지 궁금합니다
ai가 계속 답변주니 답답하네요ㅠㅠ 웹 서버와 스프링 부트 소개 강의를 보면..웹어플리케이션 서버를 웹서버라 부르는 이유톰캣은 WAS인데 웹어플리케이션 서버인데..강의안에서 계속 WAS를 웹서버라고 하시는데이유가 뭔지 궁금합니다..WAS안에 웹서버가 들어있어서 그런건가요?요청 순서요청이 오면 무조건 웹어플리케이션 안의 웹서버로 요청이 먼저오고 그 요청을 서블릿 컨테이너로 다시 넘기는 건가요? 3. 웹서버가 2개 인경우마지막 그림을 보시면 웹서버가 외부에 하나 있고 그 요청이WAS로 들어가는데 WAS 안에 는 사실 또 하나의 웹서버가 있지 않나요? 그러면요청 순서가클라이언트 - 외부 웹서버 - 내장 웹서버 - 서블릿컨테이너 - 스프링 이런식으로 흘러갈까요..?
-
미해결스프링 부트 - 핵심 원리와 활용
왜 웹서버라고 하나요?
웹 서버와 스프링 부트 소개 강의를 보면..웹어플리케이션 서버를 웹서버라 부르는 이유톰캣은 WAS인데 웹어플리케이션 서버인데..강의안에서 계속 WAS를 웹서버라고 하시는데이유가 뭔지 궁금합니다..WAS안에 웹서버가 들어있어서 그런건가요?요청 순서요청이 오면 무조건 웹어플리케이션 안의 웹서버로 요청이 먼저오고 그 요청을 서블릿 컨테이너로 다시 넘기는 건가요? 3. 웹서버가 2개 인경우마지막 그림을 보시면 웹서버가 외부에 하나 있고 그 요청이WAS로 들어가는데 WAS 안에 는 사실 또 하나의 웹서버가 있지 않나요? 그러면요청 순서가클라이언트 - 외부 웹서버 - 내장 웹서버 - 서블릿컨테이너 - 스프링 이런식으로 흘러갈까요..?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
gradlew build 를 왜 cmd에서 해야하는건가요?
gradlew build 를 왜 cmd에서 해야하는건가요?편리해서 그렇게 하는건지인텔리제이 안에서 세모버튼 누르면 되는데 왜 cmd에 하는지 모르겠어요수업자료에 나와있는것처럼 똑같이 실행했는데강사님 화면이랑 다르고,로컬호스트도 안뜨고어떻게 하는건지 잘 이해가 안돼요
-
미해결스프링 부트 - 핵심 원리와 활용
왜 웹서버라 하나요?
웹 서버와 스프링 부트 소개 강의를 보면..웹어플리케이션 서버를 웹서버라 부르는 이유톰캣은 WAS인데 웹어플리케이션 서버인데..강의안에서 계속 WAS를 웹서버라고 하시는데이유가 뭔지 궁금합니다..WAS안에 웹서버가 들어있어서 그런건가요?요청 순서요청이 오면 무조건 웹어플리케이션 안의 웹서버로 요청이 먼저오고 그 요청을 서블릿 컨테이너로 다시 넘기는 건가요? 3. 웹서버가 2개 인경우마지막 그림을 보시면 웹서버가 외부에 하나 있고 그 요청이WAS로 들어가는데 WAS 안에 는 사실 또 하나의 웹서버가 있지 않나요? 그러면 요청 순서가클라이언트 - 외부 웹서버 - 내장 웹서버 - 서블릿컨테이너 - 스프링 이런식으로 흘러갈까요..?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
db사용시에 그냥 워크벤치로 해도되나요?
db사용시에 그냥 워크벤치로 해도되나요?그럼 따로 인텔리제이랑 연결하는건 없는건지 궁금합니다
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
완성 코드에도 도서관 프론트엔드 소스가 html 파일에 안보이는데
7강 듣는 중에 갑자기 완성된 도서관 UI를 보여주셨는데 해당 index.html에는 해당 소스 코드가 확인이 안되는데 어디서 소스코드를 얻을 수 있는건가요 ? 아니면 뒤에서 같이 개발을 하는건가요 ? 완성본 소스 코드에서도 index.html 에서 해당 ui 코드 확인이 안되어서 물어봅니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
자바버전
자바 17버전으로 사용하고 싶은데 꼭 11버전만 사용해야할까요?
-
미해결실전! 스프링 데이터 JPA
Member 엔티티의 연관관계 메서드에 대해 질문드립니다.
Member 엔티티의 연관관계 메서드(changeTeam)는 멤버가 기존에 속한 팀을 매개변수로 전달한 새로운 팀으로 변경합니다. 그런데 기존에 속한 팀의 리스트에서 멤버를 제거해주는 작업도 추가해줘야 하지 않나 싶은데, 예제기 때문에 단순화하기 위해 생락햐신건가요? private void changeTeam(Team team) { this.team = team; team.getMembers().add(this); // add()로 추가는 했지만, 기존의 팀에서 제거하는 코드는 없음 }
-
해결됨백엔드 개발을 위한 필수 강의 - 스프링 부트3
H2 > IO Exception [90028-224] 해결법을 모르겠습니다
21:00에 나온대로 H2-console을 통해 데이터베이스에 접속하려는데 90028-224 에러가 뜹니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
자바 환경변수설정,, 빌드 안됩니다
환경변수 설정도 찾아보고 잘 한것같은데빌드하려고 하면 자꾸 저 에러가 뜹니다ㅠㅠ캡쳐 첨부합니다 부탁드려요 ~~ ㅠ_ㅠ그리고 강의에서 알려주신 이 빌드방법 해결하지 못하면강의수업 따라갈 수 없나요 ? ㅠ자바 설치파일 경로 ..C:\Program Files (x86)\jdk-17.0.9_windows-x64_bin\jdk-17.0.9
-
미해결코드로 배우는 React with 스프링부트 API서버
QTodo Class Not found
2024-04-18T17:27:21.633+09:00 ERROR 19504 --- [apiserver] [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.RuntimeException: java.lang.NoClassDefFoundError: org/zerock/apiserver/domain/QTodo] with root causejava.lang.ClassNotFoundException: org.zerock.apiserver.domain.QTodo at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[na:na] at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) ~[na:na] at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[na:na]package org.zerock.apiserver.repository.search; import com.querydsl.jpa.JPQLQuery; import lombok.extern.log4j.Log4j2; import org.springframework.data.domain.*; import org.springframework.data.jpa.repository.support.QuerydslRepositorySupport; import org.zerock.apiserver.domain.QTodo; import org.zerock.apiserver.domain.Todo; import org.zerock.apiserver.dto.PageRequestDTO; import java.util.List; @Log4j2 public class TodoSearchImpl extends QuerydslRepositorySupport implements TodoSearch { public TodoSearchImpl() { super(Todo.class); } @Override public Page<Todo> search1(PageRequestDTO pageRequestDTO) { log.info("search1........................"); QTodo todo = QTodo.todo; JPQLQuery<Todo> query = from(todo); query.where(todo.title.contains("")); Pageable pageable = PageRequest.of( pageRequestDTO.getPage() - 1, pageRequestDTO.getSize(), Sort.by("tno").descending()); this.getQuerydsl().applyPagination(pageable, query); List<Todo> list = query.fetch(); // 목록 데이터 long total = query.fetchCount(); return new PageImpl<>(list, pageable, total); } } 코드는 잘 따라 친거같은데 getList() 할때마다 QTodo 클래스를 못찾는다고 요류가 뜨네요.... 어떻게 해결할 수 있을까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
MemberRepository 인터페이스에 관하여
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 제가 자바에 대해 제대로 이해하고 있는지 궁금해서 질문드립니다. clearStore가 컴파일 오류나는이유가 repository의 타입이 MemoryMemberRepository의 부모클래스인 MemberRepository에는 clearStore메소드가 없어서 오버라이딩 되어있지 않기때문인걸로 알고 있는데 맞나요?
-
미해결코드로 배우는 React with 스프링부트 API서버
섹션2 강의에 RootConfig와 ModelMapper과 관련된 내용은 없나요?
안녕하세요. 섹션2 RootConfig라는 클래스가 없다가 마지막 강의에서 보이던데 아무 언급이 없어서 질문 드립니다. 섹션2 pdf에는 RootConfig와 ModelMapper에 대해 언급되어 있던데 거기 있는 내용만 보고 넘어가면 되나요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
개인으로 따로 연습하려고 프로젝트 생성해봤는데
자꾸 오류가 뜨는데 무슨이유 일까요 ㅠㅠ
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
16:29초 order와 order_item 사이 연관관계 주인
16:29초에 order_item에서 order가 연관관계 주인이 된다고 하셨는데 order_item 엔티티 클래스 안에 보면 ```java@JoinColumn(name = "order_id") private Order order;```@JoinColumn을 한 order 외래키를 가진 order_item이 연관관계 주인 아닌가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Optional.of vs Optional.ofNullable
1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 강의 회원 도메인과 리포지토리 만들기 5:48Optional 관련 질문입니다. 인터넷에 검색해보니 of는 null 값이 들어올 경우 오류를 발생시키고 ofNullable는 null이 들어오면 처리를 해준다고 합니다. (실제로 작성해보니 오류가 잘 발생했습니다) Optional은 값이 있는지 확실하지 않을 때 사용한다고 하는데 of 메서드는 값이 확실해야만 사용할 수 있으니 어색하게 느껴졌습니다.Optional.of와 Optional.ofNullable 두가지 중 of 메서드는 어떤 경우를 위해 존재하는 건가요?