문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 다음 판 양쪽 다음 판 | ||
springframework:bean [2015/11/17 13:52] kwon37xi |
springframework:bean [2019/11/27 16:58] kwon37xi [SmartLifeCycle] |
||
---|---|---|---|
줄 1: | 줄 1: | ||
====== SpringFramework Bean ====== | ====== SpringFramework Bean ====== | ||
- | * [[springframework: | ||
+ | ===== Springframework Bean Life Cycle ===== | ||
+ | * [[http:// | ||
+ | |||
+ | ==== BeanPostProcessor ==== | ||
+ | * [[http:// | ||
+ | * Spring Bean의 생성 전후에 Bean에 대한 초기화 작업을 수행할 수 있다. | ||
+ | * BeanPostProcessor는 빈(또는 객체) 인스턴스상에서 동작한다. 즉, 스프링 IoC 컨테이너는 빈 인스턴스를 인스턴스화한 다음에 BeanPostProcessor가 자신의 일을 수행한다. | ||
+ | * [[http:// | ||
+ | |||
+ | ==== BeanFactoryPostProcessor ==== | ||
+ | * [[http:// | ||
+ | * Bean의 정의 자체를 바꿀 수 있다. '' | ||
+ | * [[springframework: | ||
+ | |||
+ | ==== SmartLifeCycle ==== | ||
+ | * [[https:// | ||
+ | * [[http:// | ||
+ | * '' | ||
+ | * '' | ||
+ | * 입력받는 역할을 하는것(MQ Listener 등)을 먼저 종료시켜줘야 더이상 입력이 없는 상태에서 Gracefull 한 종료가 가능해진다. | ||
===== Dynamic Bean Definition - 동적 Bean 생성 ===== | ===== Dynamic Bean Definition - 동적 Bean 생성 ===== | ||
+ | * [[http:// | ||
+ | |||
+ | ==== 구현 ==== | ||
+ | * [[http:// | ||
+ | @Override | ||
+ | public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) | ||
+ | throws BeansException { | ||
+ | |||
+ | RootBeanDefinition beanDefinition = | ||
+ | new RootBeanDefinition(MyServiceImpl.class); | ||
+ | serviceDefinition.setTargetType(MyService.class); | ||
+ | serviceDefinition.setRole(BeanDefinition.ROLE_APPLICATION); | ||
+ | registry.registerBeanDefinition(" | ||
+ | } | ||
+ | // 혹은 다음과 같은 스타일 | ||
+ | @Override | ||
+ | public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException { | ||
+ | for (String customerKey : customerKeys) { | ||
+ | String dataSourceName = " | ||
+ | BeanDefinitionBuilder definitionBuilder = | ||
+ | BeanDefinitionBuilder.genericBeanDefinition(JndiObjectFactoryBean.class); | ||
+ | definitionBuilder.addPropertyValue(" | ||
+ | registry.registerBeanDefinition(dataSourceName, | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | * [[http:// | ||
+ | * '' | ||
+ | |||
+ | ==== 설정에 등록 ==== | ||
+ | * 해당 구현체 자체를 '' | ||
+ | * [[http:// | ||
+ | |||
+ | |||
+ | |||
+ | ==== 참조 ==== | ||
* [[http:// | * [[http:// | ||
* [[https:// | * [[https:// | ||
- | * [[http:// | ||
- | * 해당 구현체 자체를 '' | ||
- | * 혹은 [[http:// |