spring 4

Component Scan

의존 관계 자동 주입 설정정보가 없어도 자동으로 스프링 빈을 등록해 준다. @Autowired 기능도 제공해 준다. 사용방법 □ Config파일에 @ComponentScan Annotation 붙이기 @Configuration @ComponentScan public class AutoAppConfig { } □ 스프링 빈에 등록할 클래스들에 @Component Annotation을 붙인다. @Component public class MemoryMemberRepository implements MemberRepository {} @Component public class RateDiscountPolicy implements DiscountPolicy {} @Component public class Memb..

Backend/Spring 2024.01.09

Singleton Container

□ 스프링 없는 DI 컨테이너로 구성된 경우 스프링 없는 순수한 DI 컨테이너인 AppConfig를 요청할 때마다 새로 생성한다. ex) 트래픽이 초당 100인 경우 초당 100개 객체가 생성되고 소멸된다. → 메모리 낭비가 심하다. 싱글톤 패턴으로 해결 가능 □ 싱글톤 컨테이너를 적용 후 싱글톤 패턴 private 생성자를 사용해서 외부에서 임의로 new 키워드를 사용하지 못하도록 막아야 한다. 객체 인스턴스를 2개 이상 생성하지 못하게 막아야 한다. □ 싱글톤 예제 코드 public class SingletonService { //1. static 영역에 객체를 딱 1개만 생성해둔다. private static final SingletonService instance = new SingletonSer..

Backend/Spring 2024.01.09

Container와 Bean

□ 스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext는 스프링 컨테이너이다. ApplicationContext는 인터페이스이다. Annotation 기반의 자바 설정 클래스, 스프링 컨테이너는 XML을 기반으로 만들 수 있다. 스프링 컨테이너 생성 과정 □ 스프링 컨테이너 생성 new AnnotationConfigApplicationContext(AppConfig.class); 스프링 컨테이너를 생성할 때는 구성 정보를 지정해주어야 한다. 해당 사진에서는 AppConfig.class 구성 정보로 지정했다. □ 스프링 빈 등록 스..

Backend/Spring 2024.01.08

스프링 핵심 원리 이해 1, 2

요구사항에 따른 코드 구현 및 설계도는 생략하였다. □ 문제점 코드 public class OrderServiceImpl implements OrderService { // private final DiscountPolicy discountPolicy = new FixDiscountPolicy(); private final DiscountPolicy discountPolicy = new RateDiscountPolicy(); } 이런 코드의 경우 OrderServiceImpl 는 Interface인 OrderService 에 의존하고 있다. (설계된 의도) FixDiscountPolicy(), RateDiscountPolicy()를 직접적으로 객체를 생성하므로 두 클래스에도 의존을 하게된다. → DIP를..

Backend/Spring 2024.01.04