@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 RateDiscountPolicy();
}
}
빈을 모두 찍어보는 코드
결과, 내가 등록해준 Bean까지 잘 등록이 된 모습
빈 중에서 role 이 ROLE_APPLICATION 인 아이만 찾을 것임, 이건 우리가 등록해준 bean들
ROLE_INFRASTRUCTURE 은 스프링 내부에서 사용되는 빈들
BeanDefinition beanDefinition =
ac.getBeanDefinition(beanDefinitionName);
if (beanDefinition.getRole() == BeanDefinition.ROLE_APPLICATION) {
Object bean = ac.getBean(beanDefinitionName);
ac.getBean(빈이름, 타입)
ac.getBean(타입)
@Test 시