묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
updateMemberResponse 반환 값
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요. @PutMapping("/api/v2/members/{id}") public updateMemberResponse updateMemberV2( @PathVariable("id") Long id, @RequestBody @Valid updateMemberRequest request) { memberService.update(id, request.getName(), request.getAddress()); // Member findMember = memberService.findOne(id); return new updateMemberResponse(id, request.getName(), request.getAddress()); }return에 requst의 값을 넣어서 반환 받는 건 안 좋은 방법일까요?findMember로 꺼내서 return 하면 request로 바로 하는 것 보다 어떤 이점이 있는건가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
gradlew 빌드 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.계속 "내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다." 라고 뜹니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
중복회원예외()에서 오류 발생
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]중복 회원 예외()에서 오류가 자꾸 발생합니다. @Test public void 중복_회원_예외() throws Exception { //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)); //Then assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다."); } }Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appendedjava.lang.IllegalStateException: 이미 존재하는 회원입니다. at hello.hello_spring.service.MemberService.lambda$validateDuplicateMember$0(MemberService.java:39) at java.base/java.util.Optional.ifPresent(Optional.java:178) at hello.hello_spring.service.MemberService.validateDuplicateMember(MemberService.java:38) at hello.hello_spring.service.MemberService.join(MemberService.java:31) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) at hello.hello_spring.service.MemberService$$SpringCGLIB$$0.join(<generated>) at hello.hello_spring.service.MemberServiceIntegrationTest.중복_회원_예외(MemberServiceIntegrationTest.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)
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
서블릿 생성과 등록 차이
이번 강의에서 @ServletComponentScan 에 대한 설명을 들으면서 궁금한 점이 생겼는데요, 서블릿 생성과 등록 차이에 대한 질문좀 드리겠습니다.ServletApplication이 실행되고 @ServletComponentScan 이 붙어있으면 현재 내 패키지를 포함해서 하위 패키지를 뒤져서 서블릿을 모두 찾아 자동으로 서블릿을 등록해준다고 하셨습니다.아마 서블릿 컨테이너에 등록하는 것이겠지요? (틀렸다면 말씀해주세요)그런데 여기서 이 등록이라는 것이 서블릿 객체로 생성해서 등록하는 것인지 아니면 객체가 아닌 단순히 스프링 빈처럼 빈이름이라던가 해당 서블릿을 타입이라던가 그런것을 식별 정보만을 사용해서 등록한다는 것인지 궁금합니다. 왜 이 부분을 질문 드리냐면 이전 강의에서 서블릿 컨테이너의 역할중에 서블릿 객체를 생성하는 역할이 있다고 강의 하셨는데요. 서블릿이 자동 등록될 때 만약에 객체를 생성해서 객체가 등록된다면 @ServletComponentScan 은 단순히 스캔 및 서블릿으로 등록 판별만하고 서블릿 객체를 생성하는건 서블릿 컨테이너의 역할이 될 것 같은데 만약에 객체를 생성해서 등록하는게 아닌 스프링 빈처럼 @ServletComponentScan 이 이름, 타입같은 정보로만 등록하는 것이라면서블릿 컨테이너의 서블릿 객체 생성 역할은 언제 일어나고 언제 사용되는건지 잘 모르겠습니다.@WebServlet에서 알맞은 url 매핑 요청이 들어왔을 때 그제서야 서블릿 컨테이너에 있는 정보를 바탕으로 서블릿 객체를 생성하고 request와 response를 받는 식인가요? 결국 제가 궁금한건 @ServletComponentScan 에서 말하는 자동 등록이 스프링 컨테이너가 하는 객체 생성까지 포함인지, 아니면 별도의 정보로 등록하고 컨테이너가 하는 객체 생성도 별개의 것인지 궁금합니다. 감사합니다!
-
미해결Kevin의 알기 쉬운 Spring Reactive Web Applications: Reactor 1부
subscription signal 에 upstream 으로 이동하는 순서
안녕하세요, 좋은 강의 감사합니다.쉬운 예제코드와 그림설명 덕분에 Java 8 stream API, Spring Batch ItemStream 과 대조해가며 쑥쑥 이해하고 있습니다. ContextAPIExmaple02 에서 궁금한 점이 있습니다.contextWrite() 호출 순서에 의문이 생겨 순서를 변경해보니, 무조건 아래에서 위로 진행되는 걸로 확인되었습니다. 이 규칙이 적용되는 원리가 궁금합니다. 현재 추측하기로는 "subscription signal 에 따라 upstream 으로 이동하는 operator 들은 모두 아래에서 위 순서대로 이동(반전)된다." 인 것 같은데, 확신이 생기지 않습니다.참고 할 수 있는 자료나 내부 클래스가 있을까요?
-
해결됨6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법
RedisTemplate<String, String>
RedisTemplate<String, String> 빈으로 등록하지 않고 생성자 주입으로 사용하던데 빈으로 등록하지 않아도 스프링 내에서 자동으로 빈 등록해주나요?
-
해결됨실무 환경 그대로 주문게시판 만들기 웹개발 기초 마스터
404 톰캣오류
톰캣 404 오류떄매 미치겠습니다. 해당 부분대로 따라하고 서버 빌드해도 자꾸 안되네요. 티스토리 싹다 뒤져도 안고쳐져서 원인파악을 계속못하고있습니다.path경로 다 바꾸고 했는데도안되네요.ㅠㅠ
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
핸들러 매핑, 어댑터 제대로 이해했나요??
이전에 저희가 구현했을때는 Map에서 그냥 url일치하는 것을 가져오다보니 이해가 쉬웠는데 핸들러 매핑이라는 개념으로 바뀌다 보니 꽤나 헷갈리는 부분이 있어서 질문드립니다. 핸들러 매핑과 어댑터 제가 제대로 이해하고 있는게 맞는지 꼭 확인좀 해주시면 감사하겠습니다.추측이 좀 있습니다...먼저 컨트롤러를 찾기 전에 어떤 핸들러 매핑 사용해야하는지 찾고 그 다음 이 핸들러 매핑을 사용해서 알맞은 컨트롤러를 찾는게 맞는다.이번 강의에선 먼저 우선순위가 높은 RequestMappingHandlerMapping이 @RequestMapping이 있는지 확인한다. 없으므로 다음 우선순위로 넘어간다. BeanNameUrlHandlerMapping이 컨트롤러들을 확인해서 일치하는 스프링 빈 이름이 있는지 찾는다. 일치하는 스프링 빈이 있으므로 핸들러로 꺼낸다. 꺼낸 핸들러를 처리하기 위한 어댑터를 찾는다. 앞서 직접 구현한 V5에서 처럼 어댑터를 하나씩 꺼내어 adapter.supports()하여 알맞은 어댑터 인지 찾는다.RequestMappingHandlerAdapter 와 HttpRequestHandlerAdapter 는 아니므로 넘어가고 SimpleControllerHandlerAdapter이 처리 가능한 어댑터로 반환된다.여기까지입니다. 제가 특히나 궁금한 것은 핸들러 매핑입니다. 제가 적은 핸들러 매핑 방식은 핸들러 매핑이 먼저 우선순위대로 하나씩 선택되고 선택된 핸들러 매핑이 다시 컨트롤러들을 검사해서 알맞은 컨트롤러를 찾는 식으로 적어놨는데요.즉, 먼저 RequestMappingHandlerMapping 이 선택되고 @ReqiestMapping인 컨트롤러가 있는지 찾고 없으면 다음 BeanNameUrlHandlerMapping 이 선택되고 매핑 방식인 빈 이름으로 컨트롤러들을 검사해 있으면 반환.어댑터는 위에 적은 그대로입니다.이런 식으로 이해했는데 제대로 이해했을까요? 혹 틀린부분이나 잘못 이해하고 있다면 꼭 지적해주시면 감사하겠습니다. 감사합니다...!!
-
해결됨옆집 개발자와 같이 진짜 이해하며 만들어보는 첫 Spring Boot 프로젝트
수업 자료는 어디에 있나요?
안녕하세요,수업자료 pdf는 어디에 있나요?
-
미해결죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.
외부 API 테스트
kill9형 오매불망 테스트만 기다리고있었는데 업로드 되서 너무 좋다. 근데 외부 API 호출이 Step 안에 있는 경우 어떻게 테스트하면 좋을지 알려 줄 수 있을까?호출이 가능한 상황과 호출이 불가능한 상황 2가지 경우에 대해서 설명부탁해
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
스프링 수동 빈 등록에서 인코딩 관련 질문입니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 강의에서 MessageSource 인터페이스의 구현체인 ResourceBundleMessageSource를 스프링 빈으로 등록해서 사용한다라고 하셨는데,구현체의 setDefaultEncoding()메서드를UTF-8로 강제 할 수 있는지 궁금합니다. 찾아본 내용 중에 ResourceBundleMessageSource 클래스의 setDefaultEncoding 메서드는 적용되지 않는다는 내용을 보고 질문드립니다!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
findOrders 문제
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]orderService.findOrders(orderSearch) 가 작동하지 않습니다.오류를 고쳐보다 join에 무언가 문제가 있다는 걸 알아냈습니다.em.createQuery("select o from Order o", Order.class).getResultList()는 정상적으로 작동하나 em.createQuery("select o from Order o join o.member m", Order.class).getResultList() 는 반환 값이 없습니다. 조인을 하게 되면 문제가 발생하는데 어떻게 해결해야 할까요.
-
미해결죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.
테스트 챕터는 언제 올라오는것인가
6월 8일부터 기다리고 있어 형 얼른 마지막 섹션을 줘..현기증..나..
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
jsp를 사용하면 어디서 응답코드를 작성하나요?
아래 똑같은 질문글을 올렸는데 AI 답변은 jps에서 응답코드를 작성하지 않는다고 합니다.제가 궁금한것은 이전에는 servlet에서 저희가 직접 응답코드를 작성했는데, 이제는 jps로 넘겨주고 끝이잖아요?그런데 현재 강의에서 6분 30초경을 보면 jps에서 응답을 작성한다고 하셨는데 아래 질문글의 Ai 답변은 jsp가 응답코드를 작성하지 않는다고 합니다.그렇다면 서블릿에서 jps로 넘어간 후에 응답은 어디서 작성되나요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
홈 화면 질문(캐시 문제에 대해서)
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 궁금증이 생겨서 질문을 드립니다.home.html을 만들고 나서 localHost:8080을 호출 할때, 크롬에서 index.html 페이지가 계속 떠서 코드에 문제가 없는지 확인해 보았습니다.그래서 pdf파일에 있는 코드들도 복사 붙여놓기 해보고, 빠진것들이 없나 확인도 해보았지만 문제를 해결할수 없어서, 질문들을 확인해보니 캐시에 대한 답변이 있어서 다른 인터넷으로(edge) localHost:8080 을 치니 home이 잘 표시되더라고요… 그리고 나서 크롬 설정에 들어가서 캐시를 지우니까 홈 화면이 나오는 것을 확인할 수 있었는데요.(그전까지는 계속 index.html 뜨더라고요)개발을 하다 보면 이런 것이 생각 안날수도 있을것같은데(캐시 문제 보다 내 코드가 문제 있겠지라는 생각이요)이것에 대안 대처법 은 없나요?(계속 저가 일일히 캐시를 삭제 해야하 는건지? - 귀찮은 생각이 들더라고요)답변 부탁 드립니다. 수정1읽어보니 글이 이상해서 수정
-
미해결스프링 기반 REST API 개발
Spring 시큐리티 관련해서 WebSecurityConfigurationAdapter
WebSecurityConfigurationAdapter 상속 받아서 작업할려고 했으나 2.1.O 릴리즈 버전에서도 현재는 deprecated 된 상태인데 혹시 그 이후 어떻게 코드를 변경해야하는지 알수 있을까요
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
pdf 파일 수정 부탁드립니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요, 강의를 듣다가 pdf를 보던 중 "참고" 라고 적힌 부분에 '|' 이 부분이 글 씨를 침범 하는 사태가 있습니다.이 강의 다른 pdf 파일도 확인 해보니까 어떤 것은 괜찮고 어떤 것은 사진처럼 이렇게 되어있습니다.pdf파일을 보는 사람이 있다면 불편할 것 같네요. 추가1"회원 서비스 테스트" 강의 에서 영상에 회원 가입 테스트 에서는 Assertions.assetThat(findMember.getName()).isEqualTo(member.getName());이렇게 작성 되어 있는데, 오늘(25.6.12)pdf를 보니 pdf파일 코드 에는 assertEquals(member.getName(), findMember.getName()); 이렇게 되어 있더라고요.이렇게 하신 이유가 무엇인가요?
-
해결됨6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법
노션에 오타가 있서요
첫번째로딩:5두번째로딩:5이 맞는 거 같아요5주차15) 대표적인 문제 사례 1, 2 해결 방법 에 있습니다
-
미해결죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.
강의보다 낫네
무지성 강의 시청하다보면, 그냥 음음 하다가 끝나는 경우도 종종 있는데, 이건 읽으면서 무조건 쳐보니까 좋네 ㅇㅇ;notebooklm 에 넣어넣고 쓰고싶음
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
스프링 빈 등록시
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요.스프링 기본편의 컴포넌트 스캔에서 배운 내용에 의하면스프링 빈 등록을 위해서는 @ComponentScan이 붙어있는 설정 정보 클래스가 존재해야하는거 아닌가요? 예제 코드에는 @ComponentScan이 붙은 클래스가 없는데, 어떻게 @Component("helloBean")이 붙은 메서드를 스프링빈으로 인식하는지 궁금합니다.