컨테이너

    [Spring] 스프링 핵심 원리 기본편 - 5. 싱글톤 컨테이너

    5. 싱글톤 컨테이너 웹 애플리케이션과 싱글톤 대부분 스프링 애플리케이션은 웹 애플리케이션 웹 애플리케이션은 보통 여러 고객이 동시에 요청을 한다 스프링 없는 순수한 DI 컨테이너 AppConfig: 요청을 할 때마다 객체가 새로 생성 해결 방안: 객체가 1개만 생성, 생성된 객체 인스턴스를 공유해서 쓰기 싱글톤 패턴 객체 인스턴스를 2개 이상 생성하지 못하도록 막기 package hello.core.singleton; public class SingletonService { private static final SingletonService instance = new SingletonService(); private SingletonService() { } public static SingletonSe..

    [Spring] 스프링 핵심 원리 기본편 - 4. 스프링 컨테이너와 빈

    4. 스프링 컨테이너와 빈 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext : 스프링 컨테이너, 인터페이스 스프링 컨테이너를 생성할 때는 구성 정보를 지정해주어야 한다 @Bean 이 붙은 애들을 하나씩 호출 → 메서드 이름을 빈 이름으로, 반환하는 객체를 빈 객체로 등록 빈 이름은 항상 다른 이름을 부여 스프링 빈 의존관계 설정 설정 정보(AppcConfig)를 참고해서 의존관계 주입 스프링은 빈을 생성하고 의존관계를 주입하는 단계가 나누어져 있음 → 자바 코드로 스프링 빈을 등록하면 생성자를 호출하면서 의존관계 주입도 한꺼번에 처리 컨테이너에 등..

    [Spring] 스프링 핵심 원리 이해2 - 객체 지향 원리 적용

    스프링 핵심 원리 기본편 할인 정책을 바꾸려면 OrderServiceImpl 코드를 변경해야 함 역할과 구현을 충실하게 분리O 다형성 활용O, 인터페이스와 구현 객체를 분리함 OCP, DIP 객체 지향설계 원칙을 충실히 준수한 것처럼 보이지만 사실은 아님 DIP: 주문서비스 클라이언트(OrderServiceImpl)은 DiscountPolicy 인터페이스에 의존하면서 DIP를 지킨 것 같은데? 추상인터페이스 뿐만 아니라 구현 클래스에도 의존하고 있음 추상 인터페이스: DiscountPolicy 구현 클래스: FixDiscountPolicy, RateDiscountPolicy OCP: 변경하지 않고 확장? 지금은 기능을 확장해서 변경하면 클라이언트 코드에 영향을 줌 DIP 위반 → 추상(인터페이스)만 의존..

출처: https://gmnam.tistory.com/157 [Voyager:티스토리]