사용자 도구

사이트 도구


springframework:bean

SpringFramework Bean

Springframework Bean Life Cycle

BeanPostProcessor

  • Spring Bean의 생성 전후에 Bean에 대한 초기화 작업을 수행할 수 있다.
  • BeanPostProcessor는 빈(또는 객체) 인스턴스상에서 동작한다. 즉, 스프링 IoC 컨테이너는 빈 인스턴스를 인스턴스화한 다음에 BeanPostProcessor가 자신의 일을 수행한다.

BeanFactoryPostProcessor

Dynamic Bean Definition - 동적 Bean 생성

구현

  • BeanDefinitionRegistryPostProcessor를 구현한다.
    @Override
    public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry)
            throws BeansException {
     
        RootBeanDefinition beanDefinition = 
                    new RootBeanDefinition(MyServiceImpl.class); //The service implementation
        serviceDefinition.setTargetType(MyService.class); //The service interface
        serviceDefinition.setRole(BeanDefinition.ROLE_APPLICATION);
        registry.registerBeanDefinition("myBeanName", beanDefinition );
    }
    // 혹은 다음과 같은 스타일
    @Override
    public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException {
        for (String customerKey : customerKeys) { 
            String dataSourceName = "dataSource_" + customerKey;
            BeanDefinitionBuilder definitionBuilder = 
                    BeanDefinitionBuilder.genericBeanDefinition(JndiObjectFactoryBean.class); 
            definitionBuilder.addPropertyValue("jndiName", "jdbc/" + dataSourceName); 
            registry.registerBeanDefinition(dataSourceName, definitionBuilder.getBeanDefinition()); 
        }
    }
  • BeanDefinitionBuilder를 사용해서 Bean을 선언할 수 있다.
  • postProcessBeanFactory는 필요없을 경우 구현하지 않고 빈 메소드로 남겨둔다.

설정에 등록

참조

springframework/bean.txt · 마지막으로 수정됨: 2021/11/12 13:05 저자 kwon37xi