사용자 도구

사이트 도구


springframework:bean

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

다음 판
이전 판
springframework:bean [2015/11/17 13:45]
kwon37xi 만듦
springframework:bean [2021/11/12 13:05] (현재)
kwon37xi
줄 1: 줄 1:
 ====== SpringFramework Bean ====== ====== SpringFramework Bean ======
-  * [[springframework:javaconfig|Springframework Java Config]] 관련.+ 
 +===== Springframework Bean Life Cycle ===== 
 +  * [[springframework:bean_lifecycle|Spring Framework Bean Lifecycle]] 
 +  * [[http://blog.outsider.ne.kr/776|[Spring 레퍼런스] 4장 IoC 컨테이너 #8 4.8 컨테이너 확장점(Extension Points)]] 
 + 
 +==== BeanPostProcessor ==== 
 +  * [[http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/beans/factory/config/BeanPostProcessor.html|BeanPostProcessor]] 
 +  * Spring Bean의 생성 전후에 Bean에 대한 초기화 작업을 수행할 수 있다. 
 +  * BeanPostProcessor는 빈(또는 객체) 인스턴스상에서 동작한다. 즉, 스프링 IoC 컨테이너는 빈 인스턴스를 인스턴스화한 다음에 BeanPostProcessor가 자신의 일을 수행한다. 
 +  * [[http://www.tutorialspoint.com/spring/spring_bean_post_processors.htm|Spring Bean Post Processors]] 
 + 
 +==== BeanFactoryPostProcessor ==== 
 +  * [[http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/beans/factory/config/BeanFactoryPostProcessor.html|BeanFactoryPostProcessor]] 
 +  * Bean의 정의 자체를 바꿀 수 있다. ''BeanPostProcessor''보다 먼저 실행된다. 
 +  * [[springframework:javaconfig|Springframework Java Config]] 사용시에는 static으로 등록해야한다.
  
 ===== Dynamic Bean Definition - 동적 Bean 생성 ===== ===== Dynamic Bean Definition - 동적 Bean 생성 =====
-  * [[http://blog.jdriven.com/2015/04/spicy-spring-dynamically-create-your-own-beandefinition/|Spicy Spring : Dynamically create your own BeanDefinition[[https://dzone.com/articles/how-create-your-own-dynamic|How to Create Your Own 'Dynamic' Bean Definitions in Spring]]]]+  * [[http://www.tutorialspoint.com/spring/spring_bean_definition.htm|Spring Bean Definition]] 
 + 
 +==== 구현 ==== 
 +  * [[http://docs.spring.io/autorepo/docs/spring-framework/current//javadoc-api/org/springframework/beans/factory/support/BeanDefinitionRegistryPostProcessor.html|BeanDefinitionRegistryPostProcessor]]를 구현한다.<code java> 
 +@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());  
 +    } 
 +
 +</code> 
 +  * [[http://docs.spring.io/autorepo/docs/spring-framework/current//javadoc-api/org/springframework/beans/factory/support/BeanDefinitionBuilder.html|BeanDefinitionBuilder]]를 사용해서 Bean을 선언할 수 있다. 
 +  * ''postProcessBeanFactory''는 필요없을 경우 구현하지 않고 빈 메소드로 남겨둔다. 
 + 
 +==== 설정에 등록 ==== 
 +  * 해당 구현체 자체를 ''@Configuration''으로 지정하거나 그냥 ''@Bean''으로 생성하는 것은 작동하지 않는다. 
 +  * [[http://docs.spring.io/autorepo/docs/spring-framework/current//javadoc-api/org/springframework/context/ApplicationContextInitializer.html|ApplicationContextInitializer]] 안에서 [[http://docs.spring.io/autorepo/docs/spring-framework/current//javadoc-api/org/springframework/context/ConfigurableApplicationContext.html#addBeanFactoryPostProcessor-org.springframework.beans.factory.config.BeanFactoryPostProcessor-|applicationContext.addBeanFactoryPostProcessor]]로 등록한다. 
  
  
 +==== 참조 ====
 +  * [[http://blog.jdriven.com/2015/04/spicy-spring-dynamically-create-your-own-beandefinition/|Spicy Spring : Dynamically create your own BeanDefinition]]
 +  * [[https://dzone.com/articles/how-create-your-own-dynamic|How to Create Your Own 'Dynamic' Bean Definitions in Spring]]
springframework/bean.1447737311.txt.gz · 마지막으로 수정됨: 2015/11/17 13:45 저자 kwon37xi