Spring
[AppConfig] 앱의 전체 동작 방식을 구성(config)하기 위해, 구현 객체를 생성하고, 연결하는 기획자.
까뮈_b
2022. 4. 19. 17:08
애플리케이션을 하나의 공연이라고 생각해보자.
연극을 하는 배우가 직접 상대배우를 섭외하고 무대 진행 순서를 짠다면, 그 배우는 너무 많을 역할을 맡고 있다는 생각이 들 것이다. 이런 불상사를 방지하기 위해서는 유능한 공연 기획자가 필요하다.
객체지향의 SOLID원칙을 지키기 위해, 스프링에서는 AppConfig라는 설정클래스를 기획자 역할로 두어, 애플리케이션이 어떻게 동작해야 할지 전체 구성을 책임진다.
애플리케이션의 실제 동작에 필요한 구현 객체를 생성하는 기획자, AppConfig
@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();
}
@Bean
public DiscountPolicy discountPolicy() {
return new FixDiscountPolicy();
}
}
AppConfig에 설정을 구성한다는 뜻의 @Configuration 을 붙여준다.
각 메서드에 @Bean 을 붙여준다. 이렇게 하면 스프링 컨테이너에 스프링 빈으로 등록한다.
* DI 컨테이너
AppConfig 처럼 객체를 생성하고 관리하면서 의존관계를 연결해 주는 것을 IoC 컨테이너 또는 DI 컨테이너라 한다.
@Configuration 과 @Bean의 자세한 내용은 추후에 정리하겠다. 그 때까지 아래 블로그를 참조하도록 하자.
https://mangkyu.tistory.com/75