ApplicationContext를 스프링 컨테이너라고 칭합니다. beanFactory도 있지만 사용을 잘안하기에 ApplicationContext를 주로 스프링 컨테이너라고 합니다.
여기서 스프링 컨테이너는 자바의 객체들을 관리하는 공간
ApplicationContext는 인터페이스이므로 다형성을 가지고 있습니다.
스프링 컨테이너의 생성 방식은 아래와 같습니다.
//애노테이션 기반 생성
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(Config.class);
위의 코드는 애노테이션 기반의 자바 클래스로 컨테이너를 생성하는 방식이며 이외에도 XML이나 다른 방식으로 생성 할 수 있다고 합니다.
스프링 컨테이너의 생성
1.생성
new AnnotationConfigApplicationContext(Config.class);
AppplicationContext안에 Config.class 를 전달하여 스프링컨테이너에 전달받은 Bean의 이름과 객체를 등록해줍니다.
//Config.class
@Bean //빈등록
public MemberService memberService()//빈 이름
{
return new MemberserviceImple(memberRepository());//빈 객체
}
빈의 등록은 @Bean 또는 @Component를 사용하여 등록 할 수 있으며 이때 등록된 메서드명이 빈의 이름이 되고 객체의 값은 return해서 생성된 객체가 값으로 등록 되게 됩니다.
*@Bean(name="123")처럼 이름을 임의로 지정 할 수도 있음, 또한 빈의 이름은 중복이 되지않게 각각 다른 이름을 부여해야함
2.의존관계 설정
//Config.class
@Bean //빈등록
public MemberService memberService()//빈 이름
{
return new MemberserviceImple(memberRepository());//빈 객체
}
@Bean
public MemberReository memberRepository(){
return new MemoryMemberRepository();
}
빈의 등록이 다 되었다면 의존관계를 설정한다
memberService객체가 memberRepository를 참조하므로 이를 스프링이 참고해서 의존관계가 설정됩니다.
-김영한님의 인프런 강의를 보고 정리한 내용입니다.