지금까지 저희는 객체지향의 원리를 잘 활용해서 코드를 짜왔습니다.
이제 스프링과 같이 사용해보겠습니다.
AppConfig 스프링 기반으로 변경
@Configuration
public class AppConfig {
@Bean
public MemberService memberService() {
return new MemberServiceImpl(memberRepository());
}
@Bean
public OrderService orderService() {
return new OrderServiceImpl(
memberRepository(),
discountPolicy());
}
...
AppConfig에 설정을 구성한다는 뜻의 `@Configuration` 을 붙여줍니다.
각 메서드에 `@Bean` 을 붙여준다. 이렇게 하면 스프링 컨테이너에 스프링 빈으로 등록합니다.
public static void main(String[] args) {
// AppConfig appConfig = new AppConfig();
// MemberService memberService = appConfig.memberService();
ApplicationContext applicationContext = new
AnnotationConfigApplicationContext(AppConfig.class);
MemberService memberService =
applicationContext.getBean("memberService", MemberService.class);
...
스프링 컨테이너
`ApplicationContext` 를 스프링 컨테이너라 합니다.
기존에는 개발자가 `AppConfig` 를 사용해서 직접 객체를 생성하고 DI를 했지만, 이제부터는 스프링 컨테이너를 통해서 사용합니다.
스프링 컨테이너는 `@Configuration` 이 붙은 `AppConfig` 를 설정(구성) 정보로 사용하고, 여기서 `@Bean` 이라 적힌 메서드를
모두 호출해서 반환된 객체를 스프링 컨테이너에 등록합니다. 이렇게 스프링 컨테이너에 등록된 객체를 스프링 빈이라 합니다.
스프링 빈은 `@Bean` 이 붙은 메서드의 명을 스프링 빈의 이름으로 사용합니다. ( `memberService` ,orderService)
예)
applicationContext.getBean("memberService", MemberService.class);
기존에는 개발자가 직접 자바코드로 모든 것을 했다면 이제부터는 스프링 컨테이너에 객체를 스프링 빈으로 등록 하고, 스프링 컨테이너에서 스프링 빈을 찾아서 사용하도록 변경되었습니다.
'프로그래밍 > spring' 카테고리의 다른 글
[스프링 기본] 스프링 컨테이너와 싱글톤 패턴 (0) | 2024.03.09 |
---|---|
[스프링 기본] 객체 지향 원리 적용 (0) | 2024.03.04 |
[스프링 기본] 객체 지향 설계와 스프링 (1) | 2024.03.01 |
[스프링 입문] JPA (0) | 2024.03.01 |
[스프링 입문] 화면 만들기 (0) | 2024.03.01 |