bean은 BeanDefinition에 따라서 활용법이 달라지게됨
이 속성에 따라서 컨테이너가 bean을 어떻게 관리할 지 결정한다.
약간 관리 참조표라고 생각하면 편하겠다
세탁물 관리시 이 옷은 반드시 드라이를 해야한다면 그렇게해야함 <<이런느낌
BeanDefinition가 포함하고 있는 메타데이터라 하면 bean에 대한 구성 설정을 말함
BeanDefinition은 일종의 레시피라고 할 수 있다.
스스로 공부해 볼 스코프
- prototype
- requset
- session
- application
- websocket
@Configuration
public class DependencyConfig {
@Bean
public MemberService memberService() {
return new MemberService(memberRepository());
}
@Bean
public MemberRepository memberRepository() {
return new MemberRepository();
}
@Bean
public CoffeeService coffeeService() {
return new CoffeeService(coffeeRepository());
}
@Bean
public CoffeeRepository coffeeRepository() {
return new CoffeeRepository();
}
}
bean을 통해 컨테이너에 등록합니다.
public calss SingletonTest{
static AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(DependencyConfig.class);
static MemberService memberService1 = ac.getBean("memberService, MemberService.class);
static MemberService memberService2 = ac.getBean("memberService, MemberService.class);
public static void main(String[] args){
System.out.printIn("memberService1 : " + memberService1);
System.out.printIn("memberService2 : " + memberService2);
}
}
결과값
memberService1 : com.codestates.section2week4.member.MemberService@1a245833
memberService2 : com.codestates.section2week4.member.MemberService@1a245833
같은 MemberService를 불러도 같은 주소값을 가진 싱글톤이 형성된다.