내용으로 건너뛰기
권남
사용자 도구
로그인
사이트 도구
검색
도구
문서 보기
이전 판
역링크
최근 바뀜
미디어 관리자
사이트맵
로그인
>
최근 바뀜
미디어 관리자
사이트맵
추적:
springframework:bean
이 문서는 읽기 전용입니다. 원본을 볼 수는 있지만 바꿀 수는 없습니다. 문제가 있다고 생각하면 관리자에게 문의하세요.
====== SpringFramework Bean ====== ===== 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 생성 ===== * [[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.txt
· 마지막으로 수정됨: 2021/11/12 13:05 저자
kwon37xi
문서 도구
문서 보기
이전 판
역링크
맨 위로