묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨Practical Testing: 실용적인 테스트 가이드
'코틀린'에서는 빌더를 따로 쓰지 않는데, 이 때는 어떻게 test fixture를 만드시는지 궁금합니다
우빈님 안녕하세요! '코틀린'에서는 빌더를 따로 쓰지 않는데, 이 때는 어떻게 test fixture를 만드시는지 궁금합니다 ㅎㅎ저도 그동안 실무에서 자바를 쓰면서 테스트에서 given 절의 test fixture는 빌더로 만들어서 사용하고, 프로덕션에서는 팩토리 메서드로 객체를 생성해왔습니다. (물론 이 강의를 보고나서부터입니다 ㅎㅎ) 그런데 코틀린을 쓰다보니까 롬복을 거의 쓸 일이 없는 것 같더라고요.private constructor & 팩토리 메서드를 코틀린에서 쓰다 보니까 팩토리 메서드로만 객체를 생성해야해서 테스트에서 '맥락을 이해하는데 허들이 하나 더' 생기는 꼴이 되고 있어 조금 고민입니다.. 그렇다고 테스트 전용 팩토리 메서드 같은 것을 만들자니 프로덕션에 테스트 관련된 소스가 바로 생기는 것은 영 석연치 않더라고요.그래서 지금은 일단 생성자를 public으로 열어두고, 팩토리 메서드가 있는 도메인 객체를 만들 때는 무조건 팩토리 메서드만 쓴다. 그리고 테스트에서는 테스트 용이성을 위해 생성자로 객체를 생성하는 것을 허용하는 것으로 해보려고 합니다. 혹시 위 같은 상황에서 우빈님은 어떤 기준으로 쓰고 계신지 궁금합니다..!바쁘실텐데도 시간 내어 확인해주셔서 감사합니다 :)
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
연관관계 편의 메서드 위치
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요~! 궁금한 부분이 있습니다양방향일 경우에는 연관관계 편의메서드를 작성하는게 좋다고 말씀주셨는데 그렇다면 연관관계 메서드를 주인엔티티 선언하는 이유가 있을까요?아니면 상황에 따라 바뀌는걸까요? 기준이 있는지 궁금합니다~!
-
해결됨6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법
ImprovedOrder의 구조에 대한 질문입니다.
우선 orderResponse에서는 totalItems만 사용해서 수량만 요구하는 DTOOrderDetailResponse에서는 List<OrderItemResponse> items; 물품 정보를 요구하는 DTO 용으로 나뉘어 있고 Improved 역시 마찬가지였습니다.그런데 toOrderDetailResponse에서orderItems가 매핑이 안되어 있고, toOrderResponse와 코드가 동일한 상태였습니다. 제 생각에는 totalItems에 집중하신 나머지 빠뜨리신 거라고 생각되어 글을 남기게 되었고, 현재 ImprovedOrder에 orderItem이 매핑되어 있지 않은 상태 즉 반정규화 상태에서 어떻게 OrderItem을 매핑하는게 좋을지 생각해봤습니다.1. orderNumber로 findByOrderNumber단순히 ImprovedOrder에 저장된 orderNumber로 따로 orderItem들을 찾고 매핑해주는 것입니다. 현재 반정규화 의도가 totalCount만을 요구하는 도메인이 중요하기 때문에 ImprovedOrderDetailResponse를 반환할 때만 따로 매핑하는 것이죠. 다만 이는 ImprovedOrder와 OrderItem이 분명한 관계가 있음에도 매핑이 되어 있지 않는 것이라 좋은 방법인지는 의문입니다.2. ImprovedOrder에 orderItem 필드 추가totalItems와 orderItems를 모두 가지게 하고 totalItems만 필요한 상황이라면 굳이 orderItems를 get하지 않으면 Lazy 상태이기 때문에 fetch가 발생하지 않아 유연하게 사용할 수 있지 않을까 생각했습니다.포트폴리오를 위해 분석하던 과정에서 의문이 생겨 질문드렸습니다. 만약 제가 잘못 생각하고 있다면 말씀해주세요.
-
미해결스프링 부트 개념과 활용
자동설정 만들기 1부의 Holoman 관련 문의 드립니다.
HolomanRunner 클래스를 만들때 제가 사용하는 인텔리J 커뮤니티 버전에서는 아래 import 를 하지 않으면 오류가 발생해서 import를 했는데요강사님은 import 없이 사용하셨는데 저는 왜 import를 해야만 되는걸까요? import org.example.Holoman;
-
미해결스프링 핵심 원리 - 기본편
@ComponentScan 의 excludeFilters 가 예상대로 동작하지 않습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]@Configuration @ComponentScan( // basePackages = "hello.core" // excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class) // excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = ExcludeConfiguration.class) excludeFilters = @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = AppConfig.class) ) public class AutoAppConfig { }예제의 AutoAppConfig 를 이렇게 구성한뒤 AppConfig 를 스캐닝에서 제외하기 위해 최초에 알려주신 방법 이외에 다른 걸 테스트해보는 중이었습니다. 그런데 알려주신 것 이외에 아래와 같은 필터는 동작하지 않았습니다.excludeFilters = @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = AppConfig.class) 혹시 Configuration 애노테이션이 붙은 AppConfig 와 같은 클래스를 스캔에서 빼기 위해서는 오직 알려주신 아래 방법만 가능한걸까요?excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class)
-
해결됨실무 환경 그대로 주문게시판 만들기 웹개발 기초 마스터
문의
onload 이벤트 구현하기에서 ds_searchCombo에 CD_VAL 값이 계속 NULL로 전달 됩니다 강의에서 빠진 부분이 있을까요?
-
해결됨실무 환경 그대로 주문게시판 만들기 웹개발 기초 마스터
문의
onload 이벤트 구현하기에서 ds_searchCombo에 CD_VAL 값이 계속 NULL로 전달 됩니다 강의에서 빠진 부분이 있을까요?
-
해결됨6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법
포트폴리오 질문이 있습니다.
포트폴리오에 해당 강의들의 내용을 담으면 정말 좋은 무기가 될 거 같다는 생각이 드는데, 백엔드 포트폴리오에서 웹 디자인 없이 이러한 비지니스 로직들에 대해 고민하고 해결하는 걸 프로젝트라고 해도 괜찮을까요?우선 챕터 2~4 내용을 합쳐서 2,3 내용으로 인터넷 배송 도메인을 동일하게 만든 다음 4내용으로 물건 수량이 50개 남은 경우 100명의 사용자가 몰린 경우 어떻게 처리할 지 확장할 생각입니다.기업 입장에서 실제 웹사이트가 없이 API만을 이용한 대규모 처리, 각종 문제들에 대한 고민과 해결을 인정해주는지, 그것을 프로젝트라고 칭하고 포트폴리오에 담아도 되는지 잘 모르겠습니다 ㅠ
-
해결됨6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법
후보정 로직에 대해 궁금한 것이 있습니다.
4-12강 스케쥴러를 활용해서 5분마다 누락된 예약번호를 보정하는 방식인데요.만약 이럴 경우 예약 직후 예약정보를 조회하는 사용자 입장에서는 예약번호가 없어서 해당 정보창에 문제가 발생할 거 같은데, 이러면 후보정 방식은 위험한 게 아닐까 하는 의문이 들었습니다.이런 건 지금 따지지 말고 수업용으로 유연하게 넘어가는 게 맞는걸까요?
-
미해결스프링 핵심 원리 - 기본편
다양한 의존관계 주입법 - 일반 메서드 주입
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요, 강의 복습 중 질문이 생겨 여쭤봅니다 !일반 메서드 주입에서 @Autowiredpublic void init( ... ) { .. } 이 있습니다.강의에서는 일반 메서드 주입이 사실상 생성자 주입과 차이가 크게 없다고 하셨는데, 이 init 이라는 메서드도 해당 클래스가 빈으로 등록되는 과정에서 생성자처럼 자동으로 호출이 되는 것일까요 ?보통 메서드는 객체.init()으로 호출을 해야 동작할텐데, @Autowired가 메서드에 붙어있다면 스프링이 자동으로 의존관계를 주입하는 대상으로 인식하고 따로 호출 없이도 생성자처럼 동작이 되는지 궁금합니다 !
-
미해결실전! 스프링 데이터 JPA
강의 10:25 질문
안녕하세요, 강의 10:25에서 다루신 내용에 대해 질문드립니다. 영속성 컨텍스트에 1차 캐싱된 멤버 객체들이 남아있는 상태에서 벌크 업데이트를 하면 DB를 바로 통하므로 영속성 컨텍스트와 디비의 상태가 달라 예상치 못한 에러를 겪을 수 있다는 내용입니다. 궁금한점은, Spring Data JPA에서 메소드로 정의한 벌크 연산이 결국은 @Query 어노테이션에 JPQL로 작성했으니, JPQL 실행 전 flush 처리가 되는게 아닌건가요? 그렇다면 말씀하신 에러가 없을 거 같은데...궁금합니다!
-
해결됨실무 환경 그대로 주문게시판 만들기 웹개발 기초 마스터
질문이요
혹시 nexacro n에서 프로젝트 열기 시 요렇게 경고창이 뜨는데 무시하고 넘어가도 되나요?
-
해결됨실무 환경 그대로 주문게시판 만들기 웹개발 기초 마스터
질문드립니다
해결했고 nexacro studio에서 프로젝트 불러올때 base library 경로를 수정 해도 변경이 안되고 오류가 나는데 versions of sdk and base library do not match 이렇게 뜨는데요 해결방법이 필요합니다 ㅜㅜ
-
해결됨실무 환경 그대로 주문게시판 만들기 웹개발 기초 마스터
긴급 질문입니다
강의 구매해서 듣고 있는데요 tomcat 설치 하고 나서 서버 실행 시 동작을 하지 않고 context-datasource.xml 빨간 x가 뜨는데 혹시 뭔가 설정을 또 해줘야 하나요? 말씀 하신 설정은 다 완료 했습니다
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
MessageSourceTest에서 오류 발생
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.강의 코드 그래도 진행했으며, 다른 질문에 답변에 있는 utf-8설정까지 잘 마무리했습니다.위와같이 에러가 발생하며파일도 정상적으로 만들어져 있으며 application.properties도 적절하게 적었습니다. 근데 위와같은 에러가 지속적으로 발생하고 있습니다.
-
미해결실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
이 질문이 왜 없는지 이해가 안 되지만 문제 인식 및 해결 방법 남깁니다.
getStats() 안에 쿼리 작성할 때, book에서 id와 name은 불러와지는데, type이 불러지지 않습니다. QBook 클래스에서 확인해보니 final type만 없더군요. 찾아보니 이유는 이러합니다. "Kotlin에서 type은 리플렉션/메타프로그래밍에서 자주 사용되는 예약 필드명이고, QueryDSL이 Q 클래스 생성 시 내부적으로 getType()을 쓰기 때문에 필드명 충돌이 발생했을 가능성이 높아 생성되지 않을 수 있습니다. 이러한 경우 ./gradlew clean kaptKotlin 명령어로 재빌드 한 후 Q 클래스를 다시 생성하거나 type 명칭을 bookType으로 수정하여 해결할 수 있습니다."저는 ./gradlew clean kaptKotlin로 재빌드하니 해결됐습니다.
-
미해결Practical Testing: 실용적인 테스트 가이드
혹시 update 로직은 어떻게 테스트하나요? (@Setter?)
강의에선 update 로직이 없어서 테스트할 필요는 없는 것 같은데, 필요한 경우에 엔티티에 @Setter 추가해놓고 테스트 하면 될까요?setter 사용을 지양하라는 글이 많은데, 현업에서는 어떤식으로 테스트하나요?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
Missing constructor for type 'OrderQueryDto'
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.실행시 다음과 같은 오류가 발생하는데 ... 정확히 왜 오류가 나는지 이해가 되지 않습니다. ㅠ
-
해결됨스프링 부트 - 핵심 원리와 활용
스프링부트 ioc 컨테이너 갯수
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요 강사님레거시 스프링프레임워크같은 경우root-context.xml, servlet-context.xml 로 보통 계층적으로 2개의 ioc 컨테이너를 생성해서 스프링을 운용하는걸로 알고 있습니다. 그런데 스프링부트와 같은경우 스프링프레임워크과 달리 위 2개를 통합하여 1개의 ioc 컨테이너로 운용되는걸까요?
-
해결됨스프링 부트 - 핵심 원리와 활용
404 페이지
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.Test 까지는 강의와 같이 잘 뜹니다TestServlet.serviceTestServlet.serviceTestServlet.serviceTestServlet.service근데 c, ctx 를 하려니 안 나오더라고요그래서 예제 파일로 돌려봤는데도 동일했습니다파일도 첨부드립니다https://drive.google.com/drive/folders/1V5yyb9d7viV1mqRUkkJ4hr-gFdNtzTes?usp=drive_link