Spring Boot如何动态创建Bean示例代码
前言
本文主要给大家介绍了关于SpringBoot动态创建Bean的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。
SpringBoot测试版本:1.3.4.RELEASE
参考代码如下:
packagecom.spring.configuration;
importorg.springframework.beans.factory.annotation.Autowired;
importorg.springframework.beans.factory.support.BeanDefinitionBuilder;
importorg.springframework.beans.factory.support.DefaultListableBeanFactory;
importorg.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
importorg.springframework.context.ApplicationContext;
importorg.springframework.context.ConfigurableApplicationContext;
importorg.springframework.context.annotation.Bean;
importorg.springframework.context.annotation.Configuration;
importorg.springframework.jdbc.core.JdbcTemplate;
@Configuration
/**
*这里的conditional是一个可选条件,表示当这个表达式为true的时候,才动态创建bean
*/
@ConditionalOnExpression("${my.configuration.enabled}")
publicclassDynamicConfiguration
{
@Autowired
privateApplicationContextapplicationContext;
/**
*这个方法返回Runnable只是一个幌子,最重要的是执行方法里面的代码
*/
@Bean
publicRunnabledynamicConfiguration()throwsException
{
ConfigurableApplicationContextcontext=(ConfigurableApplicationContext)applicationContext;
DefaultListableBeanFactorybeanFactory=(DefaultListableBeanFactory)context.getBeanFactory();
BeanDefinitionBuilderbeanDefinitionBuilder=BeanDefinitionBuilder.rootBeanDefinition(UserService.class);
/**
*设置属性
*/
beanDefinitionBuilder.addPropertyValue("name","myConfigure");
beanDefinitionBuilder.addPropertyValue("jdbcTemplate",applicationContext.getBean(JdbcTemplate.class));
/**
*注册到spring容器中
*/
beanFactory.registerBeanDefinition("userService",beanDefinitionBuilder.getBeanDefinition());
returnnull;
}
}
classUserService
{
privateStringname;
privateJdbcTemplatejdbcTemplate;
publicStringgetName()
{
returnname;
}
publicvoidsetName(Stringname)
{
this.name=name;
}
publicJdbcTemplategetJdbcTemplate()
{
returnjdbcTemplate;
}
publicvoidsetJdbcTemplate(JdbcTemplatejdbcTemplate)
{
this.jdbcTemplate=jdbcTemplate;
}
}
之后,就可以使用如下方式获取对象了
applicationContext.getBean(UserService.class);
applicationContext.getBean("userService",UserService.class)
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。
热门推荐
10 朋友新年祝福语大全 简短
11 新年祝福语简短大方兔年
12 搬新家礼物祝福语简短
13 同学见面花束祝福语简短
14 五一假期祝福语幽默简短
15 离职欢送敬酒祝福语简短
16 对学弟的祝福语简短
17 考老师辞职祝福语简短
18 祝福语驱散霉运的话简短