728x90
우리는 스프링을 사용할 때, 생성자 주입을 통해 의존성을 주입하곤 한다. 그런데 의존성을 주입하는 경우, 2개의 의존성 중 하나를 주입해야하는 경우가 있을 것이다. public interface DiscountPolicy {}@Componentpublic class FixDiscountPolicy implements DiscountPolicy {}@Componentpublic class RateDiscountPolicy implements DiscountPolicy {} @Autowiredprivate DiscountPolicy discountPolicy 만약 위와 같이 FixDiscountPolicy와 RateDiscountPolicy가 스프링 빈으로 존재할 때,다음과 같이 @Autowired를 수..
이전 글을 통해 @Configuration 애노테이션을 통한 스프링 빈 등록에 대해 알아보았다. [Spring] @Configuration과 싱글톤 (with. CGLIB)@Configuration public class AppConfig { @Bean public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } @Bean public OrderService orderService() { return new OrderServiceImpl(memberRepository(), discountPolicy()); } @Bean ppgmjun.tistory.com 하지만 꼭 빈을 등록할 때, @Configurat..
@Configuration public class AppConfig { @Bean public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } @Bean public OrderService orderService() { return new OrderServiceImpl(memberRepository(), discountPolicy()); } @Bean public MemberRepository memberRepository() { return new MemoryMemberRepository()..
이 글은 AWS에서 예상치 못한 과금을 때려맞은 본인의 환불 기록을 담은 글이다. 나는 이런 글을 쓰게 될 줄 몰랐고, 평생 안 쓸 생각이었다. 그런데 인간은 생각보다 멍청했고, 나도 그러했다ㅋ.. 사건 수습 이후, 누구든 실수로 인해 AWS에서 과금폭탄을 맞은 경우 멘붕없이 이 글을 보며 차분히 대처할 수 있기를 바라는 마음에 기록으로 남겨보고자 글을 적게 되었다. 여행 중, 갑작스런 비용 결제 알림 💸 즐거운 제주도 가족 여행 마지막 날 새벽 6시 50분,,, 내 폰에 한 통의 결제 알림이 수신되었다. AWS로부터 결제 금액 75000원 가량이 빠져나가려다 잔액부족으로 실패했다는 알림이었다. 해당 계좌에는 다행히(?) 잔액을 만원만 입금해놓았기 때문에 돈이 출금되지는 않았고, 당황했지만 침착하게 원인..
미션 도중 생긴 고민 💭public Cars(List carNames) { ArrayList cars = new ArrayList(); for (String carName : carNames) { cars.add(new Car(carName)); } this.cars = cars; } Cars 객체를 생성할 때, List형태의 carNames를 입력받은 뒤,For-Loop 문을 통해 cars 필드를 초기화 해주었다. 하지만 For-Loop문을 생성자 로직에 적용하니 개인적으로 생성자 로직이 지저분하다는 생각이 들었다.때문에 Stream을 사용하여 짧고 가독성있는 코드로 리팩토링하여 사용하고자 하였다. 그리고 이때 머릿속에 한가..
🧐 Test Double이란?테스트 더블이란 실제 구현체로 테스트를 진행하기 어려운 경우, 이를 대신해서 테스트를 진행할 수 있도록 만들어지는 객체이다. Test Double 이란 명칭의 유래 💭영화를 촬영하는 경우, 위험한 장면 촬영할 때 실제 배우를 대신해서 촬영하는 스턴트 더블에서 유래된 단어이다. 사용 이유 💭이전에 '테스트 주도개발 시작하기' 라는 책을 읽은 적이 있는데, 해당 책 저자의 말을 빌리자면 테스트 더블은 외부 요인에 의존하는 객체에 대한 테스트를 작성할 때 "실패하는 테스트는 항상 실패하고, 성공하는 테스트는 항상 성공한다" 라는 테스트의 일관성을 지키기 위해 사용한다고 했다. 예를 들어 DB, 외부 API 등을 사용할 때, 네트워크 연결 상태 등을 포함한 다양한 변칙적 이유에..