본문 바로가기
728x90

BackEnd/Spring15

의존 관계 자동 주입 다양한 의존 관계 주입 방법 생성자 주입 수정자 주입(setter) 필드 주입 일반 메서드 주입 생성자 주입 이름 그대로 생성자를 통해서 의존 관계를 주입 받는 방법 생성자 호출시점에 딱 1번만 호출되는 것이 보장 불변, 필수 의존 관계에 사용 @Component public class OrderServiceImpl implements OrderService { private MemberRepository memberRepository; private DiscountPolicy discountPolicy; // 생성자가 딱 1개만 있으면 @Autowire 생략 가능 @Autowire public OrderServiceImpl(MemberRepository memberRepository, DiscountP.. 2022. 12. 18.
싱글톤 컨테이너 싱글톤 컨테이너 싱글톤 패턴 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴 웹 어플리케이션은 보통 여러 고객이 동시에 요청을 함. 예를 들어 고객 트래픽이 초당 100이면 100개의 객체가 생성이되고 소멸이 되어 메모리 낭비가 심함 이러한 문제를 해결하기 위해 객체가 딱 1번만 생성되어 공유하도록 하는 싱글톤 패턴이 나옴 객체가 2개 이상 생성되는 것을 막기 위해 constructor의 접근자를 private 으로 사용해야 함. 생성자를 private으로 만들면 new 키워드를 사용하여 인스턴스 생성을 하지 못 함 싱글톤의 패턴의 문제점 싱글톤 패턴을 구현하는 코드 자체가 많이 들어감 의존관계상 클라이언트가 구현체 클래스에 의존. DIP 위반, OCP 위반 가능성 높아짐 테스트하기가 .. 2022. 12. 18.
OOP 5가지 원칙 SOLID과 IoC, DI SRP - Single Responsibility Principle 한 클래스는 단일의 책임만 가져야 함 중요한 기준은 변경임. 변경이 있을 때 파급 효과가 적으면(수정할 부분이 적으면) 단일 책임 원칙을 잘 따른 것 결제 기능으로 예를 들면 payment는 PaymentService, TMS는 TmsService 이렇게 기능별로 분리해주는 것이 좋음. 분리를 하게 되면 서로 수정을해서 충돌이 날 확률이 적어지고 역할에 해당하는 서비스를 찾기 쉬움 OCP - Open/Closed Principle 클래스나 모듈은 확장에는 열려있고, 변경에는 닫혀있어야 함 다형성을 활용하여 인터페이스를 구현한 새로운 클래스를 하나 만들어 새로운 기능을 구현하는것이 좋음 객체를 생성하고 연관관계를 맺어주는 별도의 조립자, .. 2022. 12. 18.
728x90