묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Practical Testing: 실용적인 테스트 가이드
tearDown 순서
안녕하세요 강의 중반에OrderServiceTest 할 때 작성하셨떤 tearDown() 에서 @AfterEach void tearDown() { orderProductRepository.deleteAllInBatch(); productRepository.deleteAllInBatch(); orderRepository.deleteAllInBatch(); } 위의 순서를 지키지 않으면 왜 테스트가 깨지나요?어차피 매번 수행한 후에 데이터를 다 지우는 것은 동일하잖아요. fk 때문에 지워지지 않는 이유에서 그런건가요.
-
미해결Practical Testing: 실용적인 테스트 가이드
@Builder 생성자 private
안녕하세요 좋은 강의 잘 듣고 있습니다. 다름이 아니라 Product 에서 생성자에 @Builder를 붙이시고 private 으로 선언한 이유에 대해서 알 수 있을까요? 결국 테스트에서도 @Builder 로 바로 사용하듯이 밖에서도 @Builder 를 사용할 수 있으니 private 으로 하는 어떤 의미가 있는지 궁금해서입니다 뭔가 의도로는, @Builder 생성자를 내부에서만 사용할 수 있게 private 으로 하고 of 와 같은 정적 생성자에서만 build()를 사용해서 밖에서는 정적 생성자로만 객체를 생성하도록 하는 것으로 생각했거든요. 미리 감사합니다.
-
해결됨재고시스템으로 알아보는 동시성이슈 해결방법
왜 클래스 이름에 Facade 가 붙나요?
안녕하세요 좋은 강의 감사드립니다! service -> ropository 를 참조하니 Facade 인데 왜 NamedLockStockFacade , OptimisticLockStockFacade 에 클래스 이름에만 Facade 를 붙이나요?? 현업에서는 어떤 상황에 Facade 를 붙여서 사용하나요?
-
미해결Practical Testing: 실용적인 테스트 가이드
@DisplayName gradle / intellJ
안녕하세요 좋은 강의 감사합니다. 'DisplayName 을 섬세하게' 강의에서요! 설정 > Run tests using > gradle(-> intellJ) 로 변경하면 displayName 으로 뜬다고 하셨는데 기존의 gradle 로 하더라도 동일한 것 같은데 뭐가 다른가요? 감사합니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
20강 인터페이스
인터페이스 북함수 설명하는 부분에서 mysqlrepository savebook()은 오버라이드를 하는데 왜 memory savebook()은 오버라이드를 안하나요?? 둘다 인터페스에 있는 savebook()함수를 이용하는 것 아닌가요?
-
해결됨재고시스템으로 알아보는 동시성이슈 해결방법
@Transactional 으로 인한 동시성 문제 발생 원인이 궁금합니다.
안녕하세요 좋은 강의 감사드립니다!강의를 보던중 StockService 에 있는 decrease 메서드에 @Transactional 을 걸어주면 왜 동시성 문제가 해결이 안되는지 궁금합니다. 결국 @Transactional 을 걸어주면 AOP 객체가 생성되고 그 객체가 가지고 있는 모니터락을 사용해 그 객체에 한번에 하나의 스레드만 접근 가능한거 아닌가요~? 왜 동시성 제어가 안되는지 궁금합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
thymeleaf 404오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.index.html 페이지는 잘 생성됐는데텍스트 출력 기본을 누르면 404 notfound가 나옵니다.코드랑 파일이름 다 똑같이 생성했는데 왜이럴까요?강의 코드를 복사 붙여넣기해도 오류가 나옵니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원가입 테스트 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.9분 31초에 나오는 테스트 실행해봤는데 회원가입에서 중복회원이라고 에러가 뜨네요..transactional잘 되어있고 코드도 똑같은데 왜 안될까요?
-
미해결실전! 스프링 데이터 JPA
엔티티 와 도메인의 경계
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 김영한님,강의 잘 듣고 있습니다.실무에서 Spring Data JPA를 사용하는데 궁금한 부분이 있어서 질문드립니다. @Entity 애노테이션이 달린 JPA Entity를 Domain처럼 비즈니스 로직을 넣고 사용하는 것과@Entity는 순수 DB 매핑만 하고 도메인 객체는 별도로 분리해서 설계하는 방법 두가지가 있는 것 같다고 생각이 듭니다.전자는 JPA의 기능들 (영속성 컨텍스트, Dirty Checking)을 잘 사용할 수 있을 것이고, 후자는 JPA 종속성 제거등의 이점이 있을 것 같습니다. 강의에서는 주로 비즈니스 로직을 넣고 사용하는 형태로 (changeTeam() 메서드 등) 개발을 했었다고 생각됩니다.두 방법 다 장점과 단점이 있을 것 같은데, 실무에서는 주로 어떤 방식을 더 많이 사용해서 개발 하는지 궁금합니다!
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
15강 질문
예외처리에서 boolean구문에 ID는 request.getId()로 받지만 왜 name은 getName()으로 안받고 그냥 name으로 받는 건가요/.?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
윈도우 연결 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 강의 따라가는 중에 실행하면 중간중간에 한번씩 연결 거부되는데 어떻게 해야될까요??
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
윈도우 h2 연결
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.질문이 있습니다. 예를 들어 오늘 수업듣고 다음날 다시 컴퓨터를 켜서 h2db에 들어가면 URL을 앞으로 계속 빨간 네모친 걸로 접속하면 되는건가요??
-
미해결스프링 핵심 원리 - 고급편
release 필요성
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]자바에서는 사용하지 않는 값은 GC가 알아서 제거해준다고 들었는데, 꼭 릴리즈를 해줘야 하는 필요가 쓰레드로컬에서는 있는건가요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
CSR과SSR 보안적인 문제
[질문 내용]좋은 강의 잘 보고있습니다!정말 간단하게 말하면 SSR - 서버에서 HTML최종 결과를 주는 방식, CSR - 클라이언트에서 HTML데이터와 JSON으로 데이터를 받은 후 동적으로 병합하는것이렇게 정리를 했는데 데이터 보안이 굉장히 중요한 경우라면 CSR방식에서 Json으로 데이터를 받아올 때 민감한 데이터가 포함이 되어있을 수도 있다는 점을 고려했을 때 SSR방식이 보안적인 측면에서 더욱 강점이 있다고해도 맞는 말인지 궁금합니다!
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
10강 mysql 연결오류
맥북으로 다시 복습중인데 connection test를 누르면 DBMS: MySQL (no ver.) Case sensitivity: plain=mixed, delimited=exact[28000][1045] Access denied for user 'root'@'localhost' (using password: YES). 이 오류가 계속 뜹니다. mysql 서버를 재시작 하기도 해보고 비밀번호도 다시 변경 해보기도 하는데 안되네요 ㅠㅠ 왜 이럴까요??
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
6강 복습중에 질문 있습니다
GetAPI를 만들때는 dto에 생성자를 만들었는데왜 post때는 생성자를 만들지 않나요?
-
미해결Practical Testing: 실용적인 테스트 가이드
36:40 초 부근에 tearDown 없어도 통과하는 이유가 궁금해요
@DisplayName("신규 상품을 등록한다. 상품번호는 가장 최근 상품의 상품번호에서 1 증가한 값이다.") @Test void createProduct() { // given Product product = createProduct("001", HANDMADE, SELLING, "아메리카노", 4000); productRepository.saveAll(List.of(product)); ProductCreateRequest request = ProductCreateRequest.builder() .type(HANDMADE) .sellingStatus(SELLING) .name("카푸치노") .price(5000) .build(); // when ProductResponse productResponse = productService.createProduct(request); // then assertThat(productResponse) .extracting("productNumber", "type", "sellingStatus", "name", "price") .contains("002", HANDMADE, SELLING, "카푸치노", 5000); } @DisplayName("상품이 하나도 없는 경우 상품을 등록하면 상품번호는 001 이다.") @Test void createProductWhenProductIsEmpty() { // given ProductCreateRequest request = ProductCreateRequest.builder() .type(HANDMADE) .sellingStatus(SELLING) .name("카푸치노") .price(5000) .build(); // when ProductResponse productResponse = productService.createProduct(request); // then assertThat(productResponse) .extracting("productNumber", "type", "sellingStatus", "name", "price") .contains("001", HANDMADE, SELLING, "카푸치노", 5000); } private Product createProduct(String productNumber, ProductType type, ProductSellingStatus sellingStatus, String name, int price) { return Product .builder() .productNumber(productNumber) .type(type) .sellingStatus(sellingStatus) .name(name) .price(price) .build(); }강사님 화면에서는 tearDown 메소드를 추가해야지 두 메소드 모두 통과하는 것으로 나오는데, 저는 tearDown 메소드 작성 전에도 둘다 통과로 나오던데.. 뭐가 잘못된걸까요??
-
미해결스프링 핵심 원리 - 기본편
@Quilfier 못찾을 수행하는 것 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의 7분 10분경부터 나오는 내용중@Quilfier("mainDiscountPolicy")로 지정된 것을 못찾으면 mainDiscountPolicy라는 이름의 스프링 빈을 찾는 과정을 두번쨰로 수행한다고 하셨고 그리고 바로 뒤에 또 못찾으면 mainDiscountPolicy 나 스프링 빈을 찾아서 가져온다라고 하셨는데요.. mainDiscountPolicy을 못찾으면 mainDiscountPolicy을 찾아서 가져온다는게 무슨 말인지 이해가 안갑니다..어떤 클래스에 @Quilfier("mainDiscountPolicy")를 지정했으면 생성자에서 mainDiscountPolicy 이것을 찾아 주입을 할 것이고못찾으면 mainDiscountPolicy 이름의 스프링 빈을 찾는다. 여기서 mainDiscountPolicy라는 이름의 스프링이라는게 좀 헷갈리는데 스프링 이름이 그 메소드 명으로 등록된다고 하셨으니 다음AppConfig에서처럼 @Configuration public class AppConfig { ... @Bean public DiscountPolicy mainDiscountPolicy() { return new RateDiscountPolicy(); } }discountPolicy() 함수가 아니라 mainDiscountPolicy() 함수 명으로 등록된 스프링 빈이거나, 컴포넌트 스캔으로 스프링 빈으로 등록된 MainDiscountPolicy 같은 클래스를 말씀하시는건가요?
-
미해결스프링 핵심 원리 - 기본편
강의 내용과 에러가 다릅니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]OrderServiceImpl.@Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this.memberRepository = memberRepository; this.discountPolicy = discountPolicy; } @Override public Order createOrder(Long memberId, String itemName, int itemPrice) { Member member = memberRepository.findById(memberId); // 회원 정보 조회 int discountPrice = discountPolicy.discount(member, itemPrice); return new Order(memberId, itemName, itemPrice, discountPrice); } // 테스트 용도 public MemberRepository getMemberRepository() { return memberRepository; } }3분 5초경부터 강의에서 설명하는 에러는 NoUniqueBeanDefinitionException인데저는Error creating bean with name 'orderServiceImpl' defined in file [C:\Users\Desktop\spring\core\build\classes\java\main\hello\core\order\OrderServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 1: No qualifying bean of type 'hello.core.discount.DiscountPolicy' available: expected single matching bean but found 2: fixDiscountPolicy,rateDiscountPolicyorg.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'orderServiceImpl' defined in file [C:\Desktop\spring\core\build\classes\java\main\hello\core\order\OrderServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 1: No qualifying bean of type 'hello.core.discount.DiscountPolicy' available: expected single matching bean but found 2: fixDiscountPolicy,rateDiscountPolicy 이라고 나옵니다. 빈 하나가 매칭되길 예상했는데 두개를 찾았다. 이런부분은 동일한것같은데.. 에러내용이 다르네요 어떤부분이 문제일까요
-
해결됨스프링 핵심 원리 - 기본편
강의 내용과 에러가 다릅니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]OrderServiceImpl.@Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this.memberRepository = memberRepository; this.discountPolicy = discountPolicy; } @Override public Order createOrder(Long memberId, String itemName, int itemPrice) { Member member = memberRepository.findById(memberId); // 회원 정보 조회 int discountPrice = discountPolicy.discount(member, itemPrice); return new Order(memberId, itemName, itemPrice, discountPrice); } // 테스트 용도 public MemberRepository getMemberRepository() { return memberRepository; } }3분 5초경부터 강의에서 설명하는 에러는 NoUniqueBeanDefinitionException인데저는Error creating bean with name 'orderServiceImpl' defined in file [C:\Users\Desktop\spring\core\build\classes\java\main\hello\core\order\OrderServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 1: No qualifying bean of type 'hello.core.discount.DiscountPolicy' available: expected single matching bean but found 2: fixDiscountPolicy,rateDiscountPolicyorg.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'orderServiceImpl' defined in file [C:\Desktop\spring\core\build\classes\java\main\hello\core\order\OrderServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 1: No qualifying bean of type 'hello.core.discount.DiscountPolicy' available: expected single matching bean but found 2: fixDiscountPolicy,rateDiscountPolicy 이라고 나옵니다. 빈 하나가 매칭되길 예상했는데 두개를 찾았다. 이런부분은 동일한것같은데.. 에러내용이 다르네요 어떤부분이 문제일까요