javascript
java动态创建bean的意义_java相关:Spring Boot如何动态创建Bean示例代码
java相關(guān):Spring Boot如何動(dòng)態(tài)創(chuàng)建Bean示例代碼
發(fā)布于 2020-3-20|
復(fù)制鏈接
摘記: 前言本文主要給大家介紹了關(guān)于Spring Boot動(dòng)態(tài)創(chuàng)建Bean的相關(guān)內(nèi)容,分享出來(lái)供大家參考學(xué)習(xí),下面話(huà)不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧。SpringBoot測(cè)試版本:1.3.4.R ..
前言本文主要給大家介紹了關(guān)于Spring Boot動(dòng)態(tài)創(chuàng)建Bean的相關(guān)內(nèi)容,分享出來(lái)供大家參考學(xué)習(xí),下面話(huà)不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧。SpringBoot測(cè)試版本:1.3.4.RELEASE參考代碼如下:
```java
package com.spring.configuration;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;
@Configuration
/**
* 這里的conditional是一個(gè)可選條件,表示當(dāng)這個(gè)表達(dá)式為true的時(shí)候,才動(dòng)態(tài)創(chuàng)建bean
*/
@ConditionalOnExpression("${my.configuration.enabled}")
public class DynamicConfiguration
{
@Autowired
private ApplicationContext applicationContext;
/**
* 這個(gè)方法返回Runnable只是一個(gè)幌子,最重要的是執(zhí)行方法里面的代碼
*/
@Bean
public Runnable dynamicConfiguration() throws Exception
{
ConfigurableApplicationContext context = (ConfigurableApplicationContext)applicationContext;
DefaultListableBeanFactory beanFactory = (DefaultListableBeanFactory)context.getBeanFactory();
BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.rootBeanDefinition(UserService.class);
/**
* 設(shè)置屬性
*/
beanDefinitionBuilder.addPropertyValue("name", "myConfigure");
beanDefinitionBuilder.addPropertyValue("jdbcTemplate", applicationContext.getBean(JdbcTemplate.class));
/**
* 注冊(cè)到spring容器中
*/
beanFactory.registerBeanDefinition("userService", beanDefinitionBuilder.getBeanDefinition());
return null;
}
}
class UserService
{
private String name;
private JdbcTemplate jdbcTemplate;
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public JdbcTemplate getJdbcTemplate()
{
return jdbcTemplate;
}
public void setJdbcTemplate(JdbcTemplate jdbcTemplate)
{
this.jdbcTemplate = jdbcTemplate;
}
}
```
之后,就可以使用如下方式獲取對(duì)象了
```java
applicationContext.getBean(UserService.class);
applicationContext.getBean("userService", UserService.class)
```
總結(jié)
以上是生活随笔為你收集整理的java动态创建bean的意义_java相关:Spring Boot如何动态创建Bean示例代码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java dalvik_深入理解Andr
- 下一篇: php r echo_PHP中echo(