카테고리 없음

Spring의 스프링 컨테이너, @Configuration, @Bean 정리

이운형 2022. 1. 25. 23:23
반응형

# 인프런 김영한의 스프링 핵심 원리 - 기본편을 개인적으로 정리한 글입니다.

 

정리


Q. @Configuration이 뭐야?

DI컨테이너 역할을 하는 AppConfig를 Spring에서 관리하겠다고 선언할때 @Configuration을 넣는다.

@Configuration
public class AppConfig {



//    public MemberService memberService(){
//        return new MemberServiceImpl(new MemoryMemberRepository());
//    }
    @Bean
    public MemberService memberService(){
        return new MemberServiceImpl(memberRepository());
    }
    @Bean
    public MemberRepository memberRepository() {
        return new MemoryMemberRepository();
    }

다음과 같이 memberService는 memberRespository를 가지고 있는 MemberServiceImpl을 생성하고 

memberRespository는 MemoryMemberRepository를 가지고 있다. //객체지향 설계 원칙중 DIP, OCP를 위반하지 않음.

 

Q. Bean은 뭐야?

스프링 컨테이너 속에 등록된 객체 //거의 @Configuration 내에 등록된 객체들을 @Bean으로 처리한다.

 

 

Q. 스프링 컨테이너가 뭐야?

ApplicationContext를 의미하며, @Configuration과 @Bean이 붙은 객체를 모두 호출해서 저장하는 장소

public static void main(String[] args){

    ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
    MemberService memberService = applicationContext.getBean("memberService", MemberService.class);
    OrderService orderService = applicationContext.getBean("orderService", OrderService.class);

<App개발시 applicationContext에서 getBean을 통해 bean을 불러와 개발이 이루어짐>

 

//    AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);

 

<실무에서는 

@Configuration과 @Bean이 저장된 ApplicationContext를 불러오고 싶으면

applicationContext의 구현체인

AnnotationConfigApplicationContext를 사용하여 개발하자.>

 

 

이전에는 개발자가 필요한 객체를 AppConfig 를 사용해서 직접 조회했지만,

현재부터는 스프링 컨테이너를 통해서 필요한 스프링 빈(객체)를 찾아야 한다.

//스프링 빈은 applicationContext.getBean() 메서드를 사용해서 찾을 수 있다.

 

기존에는 개발자가 직접 자바코드로 모든 것을 했다면

이제부터는 스프링 컨테이너에 객체를 스프링 빈으로 등록하고,

스프링 컨테이너에서 스프링 빈을 찾아서 사용하도록 변경되었다.

반응형