OrderServiceImplTest 코드에서 OrderService orderService = new OrderServiceImpl(new MemoryRepository(), new FixDiscountPolicy()) 라는 코드를 작성하셨는데요 이 테스트 코드에서 OrderserviceImpl 내의 discountPolicy 에 의존관계가 주입되는 이유가 궁금합니다. new FixDiscountPolicy() 는 다음 강의에서 이 클래스에 @Component 를 붙이므로 이번 강의에서는 @Component 가 작성이 안되어있는 것으로 아는데 이 말은 빈으로 등록이 안된다는 것으로 이해되는데요. 그러므로 OrderserviceImpl 는 @AutoWired 를 이용한 자동주입을 사용하는데 것을 사용할 경우 이전강의인 다양한 의존관계 주입 방법 였던가요? 빈에 등록되어있지 않으면 오류가 난다고 하셨습니다. 그러니까 지금 현재 Test 코드에서 new FixDiscountPolicy() 이것은 빈이 등록되지 않은 없는 순수 자바 객체일것 같은데 OrderserviceImpl 에서 discountPolicy 를 자동주입 하려는데 어떻게 오류가 나지 않나요?
강의에서 3분 20초 정도부터 나오는 내용에서 수동빈 등록 vs 자동 빈등록에 대해서 Test코드가 문제 없이 성공했잖아요? 같은 빈의 이름이 두개인데 등록 성공했다는 뜻이죠. 그런데 스프링 부트로 실행하는, 그러니까 CoreApplication에서 실행하는 본 코드에서는 에러가 나잖아요? 여기서 제가 궁금한게Test 코드가 본코드 실행전에 말그대로 정상 동작하는지 Test 하기 위함인데 Test 코드에서는 성공했는데 본 코드에서는 에러가 난다? 그렇다면 이거는 Test 코드의 목적이 없어지는것 아닌가요? 제가 뭘 잘못 이해하고 있는걸까요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] Order <-> Member 는 N:1 Order <-> Delivery 는 1:1 관계이며, proxy 객체로 들고오는 것이 목적이 아니기 때문에 fetch join 을 이용하여 바로 데이터를 DB에서 들고 온 거고 OrderItems 는 조회문에서 뺀 다음 Order <-> OrderItmes 1:N Lazy 를 이용하여 proxy 상태로 들고 온 상태에서 .get() 과 같은 함수를 이용해서 그때 데이터를 채워놓은거라고 이해하면 될까요? OrderItems에 데이터가 DB데이터가 채워질 때 N+1 과 같은 문제가 발생하지 않은 건 hibernate.default_batch_fetch_size 또는 @BatchSize 이용하기에 그런 거구요. 그럼 만약에 Order 주문 조회 후 Controller 에서 해당 OrderItems 의 Class 를 확인하면 proxy로 나오게 되고, order.getOrderItems() 와 같이 호출을 하게 되면 OrderItems는 proxy 객체가 아닌 실제 DB조회데이터가 나오게 되는 걸까요??
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= 강의 내용중에 부모타입으로 조회시 자식 빈까지 모두 조회된다 라는 부분에서 궁금한 점 있습니다. 강의에서 TestConfig 클래스에서 RateDiscountPolicy 와 FixDiscountPolicy 타입을 빈으로 등록합니다. 그리고 이 두 타입을 모두 조회하기 위해서 ac.getBeansOfType(DiscountPolicy.class) 에 부모타입인 DiscountPolicy.class를 넣어 조회했습니다. 그리고 또 ac.getBeansOfType(Object.class) 을 하여 자식 타입을 모두 조회했습니다. 여기서 궁금한것은 DiscountPolicy나 Object 클래스는 Config 클래스에서 빈으로 따로 등록하지 않았는데도 어떻게 조회가 가능한건가요?
안녕하세요. 테스트코드 작성 중 아래 파싱하는 부분 관련하여, as Byte -> toInt 변환 도중 에러가 발생합니다.. DB스키마 DDL의 경우, boolean -> tinyint(1) 로 생성된것으로 보이는데, 어떻게 해결할 수 있을까요? ``` class java.lang.Boolean cannot be cast to class java.lang.Byte (java.lang.Boolean and java.lang.Byte are in module java.base of loader 'bootstrap') java.lang.ClassCastException: class java.lang.Boolean cannot be cast to class java.lang.Byte (java.lang.Boolean and java.lang.Byte are in module java.base of loader 'bootstrap') ``` isPaymentDone = ((results.first()["is_payment_done"] as Byte).toInt()== 1),
1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 2주차 성능 테스트 챕터까지 수강했습니다. 제목처럼 강의 주요 내용은 아니지만 궁금한 점이 생겨 글 작성하였습니다. 질문에 악의가 없는데, 쓰다보니 공격적인 말투로 느껴지네요... 죄송합니다. 공격이 아니고 제가 공부한 부분과 달라서 어떤 게 맞는지를 여쭙고자 작성한 질문입니다. 작성해주신 포트폴리오 코드를 보면, A Service에서 A Repository, B Repository, C Repository 등을 주입받아 사용하셨는데 이게 올바른 구조인가요?? 상황: 현재 저는 계층형 폴더 구조(Controller, Service, Repository 등)가 아닌 도메인형 폴더 구조(User, Post, Tag 등)를 가져가고 있습니다. 계층형과 도메인형 모두 자신의 도메인이 아닌 다른 도메인의 다른 레이어 파일을 주입받기 보다는 Service는 Service끼리 주입을 받는 게 결합도를 낮추고 리팩토링하기 편한 방향이라고 생각했습니다. 이러다보니 Controller에서 호출하는 함수는 DTO로 통신을 하고, Service끼리 사용하는 함수는 Entity로 통신을 하게 되었습니다. 주석으로 "Interal method"라고 명시를 하였지만, 응답 형식만 다를 뿐 같은 일을 하는 함수도 많아져서 이게 맞는건가 싶은 고민이 있었습니다. 애초에 Repository를 쓰는 것도 여러 파일에서 쉽게 불러쓰기 위해서라는 말도 봤던 것 같아서 뭐가 맞는지 정답이 궁금합니다. TPS 기준이 궁금합니다. 현재 쿠폰 시스템 비슷한 프로젝트를 하고 있는데, "우리 서비스의 TPS가 몇이다"라고 할 때는 가장 주요한 로직 기준으로 측정한 결과일까요? 아니면 모든 API 중 가장 낮은 TPS가 기준이 될까요? 또한 TPS 300이 되기 위해서, 400이 되기 위해서 이런 식으로 말씀해주셨는데, Insert 또는 Update 작업이 포함된 경우 어느정도 TPS가 나오면 적지 않은 수준일까요? 감사합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 강의 중간 중간에 줌을 땡기는 건 무슨 프로그램인가요? IDE가 제공하는 기능이 아니고 실제 화면이 줌 되는 기능이 궁금합니다!.. 현재 강의 2:14초 경에 ControllerV4의 process 메서드를 확인하는 과정에서 줌이 사용됩니다!..
멀티 스레딩에서 파일에 write할 때 질문이 있습니다. thread가 chunk 단위로 파일에 입력되는것은 확인했습니다. 그런데 결과 값의 정렬은 불가능한가요???? 예를 들어 db에 1, 2, 3, 4, 5 ... 라는 데이터가 있고 FlatFileItemWriter로 파일에 쓸 경우 1,2,3,4,5 이런식으로 정렬된 값이 저장 가능한지
humanThreatDataReader는 스레드 안전한 JpaPagingItemReader 를 사용했다. 라는 구문에서 헷갈리는게 있는데 JpaPagingItemReader의 경우는 lock을 걸지 않는데 SynchronizedItemStreamReader 데코레이터를 적용해야하지 않나요???
상태(State): 작전 수행 지점들 상태(State)란 Flow 내에서 현재 실행이 머무르거나 도달할 수 있는 모든 논리적 지점 을 의미한다. 자동문의 "문 닫힘/문 열림" 에 해당한다. Flow를 구성하는 상태(State)는 크게 두 가지 주요 유형으로 분류할 수 있다. 실행 상태 (StepState 등): 실행 상태는 Flow 내에서 실제 특정 작업(로직)을 수행하는 지점을 나타낸다. 우리 강의의 예제 코드에서 사용된 analyzeContentStep , publishLectureStep , summarizeFailureStep 과 같은 Step이 대표적인 실행 상태(StepState)에 해당한다. 종료 상태 ( EndState ): 종료 상태는 Flow 실행의 최종 도착점을 나타내는 상태이다. Flow가 이 상태에 도달하면 더 이상 진행되지 않고 실행이 종료된다. Job의 최종 결과는 Flow가 어떤 EndState 로 끝났는지에 따라 결정된다. 다이어그램의 [작업 종료] 가 바로 이 종료 상태(EndState)를 가리킨다. 종료 상태(EndState): Flow 실행의 최종 도착점 이다. 이 상태에 도달하면 실행 흐름이 더 이상 진행되지 않고 Flow가 종료된다. Job의 최종 결과는 어떤 EndState로 끝났는지 에 따라 결정되며, 앞선 다이어그램의 [작업 종료] 가 바로 이 종료 상태(EndState)에 해당한다. 여기서 종료 상태가 두개인데 다른 내용인가요???
에러상황: Caused by: java.lang.AssertionError: Range for response status value 401 expected:<SUCCESSFUL> but was:<CLIENT_ERROR> at org.springframework.test.util.AssertionErrors.fail(AssertionErrors.java:61) at org.springframework.test.util.AssertionErrors.assertEquals(AssertionErrors.java:128) at org.springframework.test.web.servlet.result.StatusResultMatchers.lambda$is2xxSuccessful$3(StatusResultMatchers.java:80) at org.springframework.test.web.servlet.MockMvc$1.andExpect(MockMvc.java:214) at com.example.controller.BookControllerItTest.정상인자로 요청시 성공한다.(BookControllerItTest.groovy:43) 관련 내용을 검색해 보니 401 에러는 보통 로그인/인증 문제로, SecurityConfig.java 파일 등을 수정하라는 안내를 봤습니다. 다만, 현재 수강 중인 강의에는 로그인 기능이 없는 상황입니다. 이 경우, 인증 없이 테스트가 통과되도록 설정을 변경하려면 어떻게 해야 할지 조언 부탁드립니다. 참고로, 관련 파일은 메일로 함께 전달드렸습니다. 감사합니다.
환경구축시 서버랑 넥사크로랑 연결이되지 않은거 같습니다. 요청이 서버까지 가지 않는거 같은데 어디부터 손 데야할까요? 이클립스 로그 13:01:08.906 [http-nio-8080-exec-3] WARN [org.springframework.web.servlet.PageNotFound] - No mapping for GET /orderBoard/ healthCheck.do 넥사크로 에러입니다 Local Web Server> [Error] The File doesn't exist : "file://C:/Dev/eclipse-space/orderBoard/src/main/webapp/packageN/none" Local Web Server> [Error] 404 Not Found : 127.0.0.1:4098 "GET /none HTTP/1.1" Nexacro (16024)> UD 13:8:31:895 ===== 접속경로 : http://127.0.0.1:4098/ Local Web Server> [Error] The File doesn't exist : "file://C:/Dev/eclipse-space/orderBoard/src/main/webapp/packageN/none" Local Web Server> [Error] 404 Not Found : 127.0.0.1:4098 "GET /none HTTP/1.1" Nexacro (16024)> UD 13:8:39:114 gfnCallback : SvcID>>healthCheck, errorCode>>-1, isAsync>>true, sStartDate>>2025-05-03 13:08:37 146, sEndDate>>2025-05-03 13:08:39 114, nElapseTime>>1.968 ==================== errorMsg ======================= FAILED ================================================== Nexacro (16024)> UD 13:8:39:122 undefined
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= jsp를 배우기전에는 servlet에서 응답 메시지를 작성했잖아요? 그런데 jsp와 이번에 mvc 패턴을 배우면서 강의에서 서블릿에서 jsp로 제어권(요청의흐름?)이 넘어가고 jsp에서 응답을 만들어서 클라이언트한테 보낸다고 강의에서 말씀하셨는데요. 그렇다면 궁금한게 기존 서블릿에서 작성하던 응답 메시지들 정보들은 jsp에서 작성하나요? 헤더 정보라던지 응답 코드라던지 등등이요. jsp가 뷰를 담당하기때문에 html 코드를 작성하는데 jps 파일에서 여기서 응답 메시지를 작성하는게 가능한지 또 가능하다면 응답 메시지를 이곳에서 작성하는게 적절한지 궁금합니다. 순수 뷰를 위한 html을 작성하는 곳이라고 생각했는데, 응답 메시지 같은 코드같은게 있는것이 적절한것인지 순수하게 궁금합니다. 답변해주시면 감사하겠습니다
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] update할때 요구사항이 "수정에서는 수량은 자유롭게 변경할 수 있다."라고 하셨는데, ItemUpdateForm 클래스에서 quantity 에 @NotNull을 붙이지 않은 이유는 만약 수정할때 Item 수량값 자체가 없으면 "수량을 파악할수 없는 아이템이라고 내부적으로 판단했다"라고 생각하면 되나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= 6:10~ 부터해서 내용이 잘이해가 가지않습니다.. 처음 웹브라우저가 url 요청하고 url에 해당하는 뷰를 렌더링까지하는 것은 이해가 됐습니다. 그런데 url 변경이 되지않았다 << 이부분이 이해가 잘안갑니다.. 원래라면 해당 url 요청하고 뷰를 렌더링하면 다른 url로 바뀌어야한다는말씀인가요? 그러니까 url 변경이 되지 않았다는 것이 /servlet-mvc/members/new-form 이 /WEB-INF/views/new-form.jsp 로 변경이 되지 않았다는 말씀인가요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) -> 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) -> 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) -> 예 [질문 내용] 현재 상황 File | Settings | Build, Execution, Deployment | Build Tools | Gradle 선택 시 'select configuration element in the tree to edit its settings' 만 조회되고 general settings 설정 창이 안보이는 상황 단, import gradle 프로젝트 로딩은 문제가 없으며 코드 실행 역시 잘 되는 상황. 시도했던 해결 방안들 인텔리제이 Invalidate and Restart 를 거침 인텔리제이 전체 재설치 진행 start.spring.io의 경우 해당 사진의 설정 사용 GPT에서 제공한 프로젝트 폴더 파일 역시 같은 증상(설정 조회가 되지 않는) 증상을 보임 프로젝트 JDK 설정 역시 21 버전으로 설정, JAVA_HOME 환경 변수 역시 21버전으로 설정 gradle 플러그인 역시 설치 및 활성화 되어 있음을 확인 .idea 폴더와 .gradle 폴더 삭제 후 다시 프로젝트를 열어봄. gradle wrapper 존재 확인 Run anything에서 gradle clean 등의 실행을 거쳐봄. 결론... 여러 방안을 시도해보고 설정 역시 계속 재확인 후 인텔리제이 리스타트를 진행해도 해당 설정이 조회되지 않고, select configuration element in the tree to edit its settings 표시만 떠 있네요... 혹시 해결 방안을 아시는 분 계실까요? 오늘도 노고 많으십니다. 좋은 하루 되세요.
안녕하세요. 먼저 강의 제작해주셔서 감사합니다! 많은 도움 되고 있습니다. 메타 주석 부분에 사실 expression이 없어서 제가 이해하기로는 타입 추론으로 값을 넣는 것 같습니다. 그럼 결국 @AuthenticationPrincipal에서도 expression이 없어도 동작하는게 맞을까요? 감사합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= utf-8에 대한 질문입니다. 강의에서 application/json은 스펙상 utf-8을 사용하도록 정의가 되어있다고 하셨는데요. 그래서 application/json만 전달해야한다고 하셨구요. 그렇다면 setChracterEnconding("utf-8")은 뭔가여? 그냥 헤더에 정보를 남기기 위함인가요?
안녕하세요. 아래는 강의 자료 캡처입니다. 1, 2, 3, 4 번에 대한 각각의 강의가 없어서 문의 드립니다. 특히, 4번은.. OAuth 2.0 강좌 전체에서 Authorization server 에 직접 DB 나 Nosql 에 연동하는 강의가 없는 것 같아서 꼭 보고 싶은데.. 깃헙에 브랜치마저도 없는 것 같아 문의 드립니다.. 감사합니다.