Spring动态注册Bean
2017-06-13 00:00
337 查看
摘要: Spring动态创建Bean
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Slf4j
@Configuration
public class DynamicConfiguration{
@Autowired
private ApplicationContext applicationContext;
}
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Slf4j
@Configuration
public class DynamicConfiguration{
@Autowired
private ApplicationContext applicationContext;
[@Bean](https://my.oschina.net/bean) public Integer registerMessageListener(){ AutowireCapableBeanFactory autowireCapableBeanFactory = applicationContext.getAutowireCapableBeanFactory(); //理论上这段代码执行不到,因为现在所有的bean生成都依赖DefaultListableBeanFactory if(!(autowireCapableBeanFactory instanceof DefaultListableBeanFactory)){ String error = "applicationContext.getAutowireCapableBeanFactory() is not DefaultListableBeanFactory," + "The current factory class is" + autowireCapableBeanFactory.getClass() + ",can not register message listener"; log.error(error); throw new RuntimeException(error); } DefaultListableBeanFactory beanFactory = (DefaultListableBeanFactory)autowireCapableBeanFactory; //1.创建bean BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.rootBeanDefinition(UserService.class); //2.设置属性 beanDefinitionBuilder.addPropertyValue("name", "myConfigure"); beanDefinitionBuilder.addPropertyValue("jdbcTemplate", applicationContext.getBean(JdbcTemplate.class)); //3.注册到spring beanFactory.registerBeanDefinition(“userService”, beanDefinitionBuilder.getBeanDefinition()); log.info("register message listener success"); return 0; }
}
相关文章推荐
- spring实现动态注册bean
- spring中注册bean(通过代码动态注册)
- spring中注册bean(通过代码动态注册)
- 理解spring的BeanDefinition和配置文件(原文标题:动态注册bean到spring容器)
- spring动态bean注册示例分享
- Spring实现Bean动态注册
- 【Spring】bean动态注册到spring
- spring bean装配 注册动态工厂和静态工厂
- spring动态bean注册示例分享
- Spring 实现动态注册Bean
- spring中注册bean(通过代码动态注册)
- spring 动态注册bean
- spring中注册bean(通过代码动态注册)
- Spring动态注册bean实现动态多数据源
- Spring动态注册bean实现动态多数据源
- spring中注册bean(通过代码动态注册)
- spring 根据配置文件动态注册bean
- Spring动态注册bean实现动态多数据源
- Spring运行时动态注册bean的方法
- Spring之动态注册bean的实现方法