spring中注册bean(通过代码动态注册)
来源:互联网 发布:英国读高中知乎 编辑:程序博客网 时间:2024/06/04 18:01
//将applicationContext转换为ConfigurableApplicationContextConfigurableApplicationContext configurableApplicationContext = (ConfigurableApplicationContext) applicationContext;// 获取bean工厂并转换为DefaultListableBeanFactoryDefaultListableBeanFactory defaultListableBeanFactory = (DefaultListableBeanFactory) configurableApplicationContext.getBeanFactory();// 通过BeanDefinitionBuilder创建bean定义BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition(UserService.class);// 设置属性userAcctDAO,此属性引用已经定义的bean:userAcctDAObeanDefinitionBuilder.addPropertyReference("userAcctDAO", "UserAcctDAO");// 注册beandefaultListableBeanFactory.registerBeanDefinition("sdfds",beanDefinitionBuilder.getRawBeanDefinition());
User.java
public class User {private String username;private String password;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}
UserService.java
public class UserService {private User user;public void test(){System.out.println(user.getUsername()+"--------------------");}public User getUser() {return user;}public void setUser(User user) {this.user = user;}}
示例:
BeanFactoryAwareBean.java
import org.springframework.beans.BeansException;import org.springframework.beans.factory.BeanFactory;import org.springframework.beans.factory.BeanFactoryAware;import org.springframework.beans.factory.support.BeanDefinitionBuilder;import org.springframework.beans.factory.support.DefaultListableBeanFactory;import org.springframework.context.ApplicationListener;import org.springframework.context.event.ContextRefreshedEvent;public class BeanFactoryAwareBean implements BeanFactoryAware,ApplicationListener<ContextRefreshedEvent> {private DefaultListableBeanFactory beanFactory;public void setBeanFactory(BeanFactory beanFactory) throws BeansException {System.out.println("setBeanFactory.........................");this.beanFactory = (DefaultListableBeanFactory) beanFactory;}public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {System.out.println("ContextRefreshed...................");BeanDefinitionBuilder userBeanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition(User.class);userBeanDefinitionBuilder.addPropertyValue("username", "chinfeng");userBeanDefinitionBuilder.addPropertyValue("password", "123456");beanFactory.registerBeanDefinition("user",userBeanDefinitionBuilder.getRawBeanDefinition());BeanDefinitionBuilder usersBeanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition(UserService.class);usersBeanDefinitionBuilder.addPropertyReference("user", "user");beanFactory.registerBeanDefinition("userService",usersBeanDefinitionBuilder.getRawBeanDefinition());}}
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"><bean id="beanFactoryAwareBean" class="BeanFactoryAwareBean"></bean></beans>
结果:
setBeanFactory.........................
ContextRefreshed...................
chinfeng--------------------
- spring中注册bean(通过代码动态注册)
- spring中注册bean(通过代码动态注册)
- spring中注册bean(通过代码动态注册)
- spring中注册bean(通过代码动态注册)
- spring实现动态注册bean
- Spring实现Bean动态注册
- Spring 实现动态注册Bean
- spring bean 的动态注册
- 通过注解的方式在spring中注册bean
- spring bean注册
- 手动注册 spring bean
- 通过代码动态注册OCX控件
- 通过代码动态注册OCX控件收藏
- Spring动态注册bean实现动态多数据源
- Spring Boot 使用Java代码创建Bean并注册到Spring中
- Spring Boot 使用Java代码创建Bean并注册到Spring中
- Spring Boot 使用Java代码创建Bean并注册到Spring中
- Spring Boot 使用Java代码创建Bean并注册到Spring中
- TXT格式的Excel表格读取问题优化解法(目前我所知的最简洁算法)
- 华为C语言笔试题集合
- 第五个解析HTML文件的Python程序
- NFS服务器安装配置实现Ubuntu12.04与arm文件共享,亲测成功
- 你真想到了50岁还靠编程来养家糊口吗?
- spring中注册bean(通过代码动态注册)
- pcap文件格式分析
- T-sql union
- 别让爱变成一种痛:有点伤感的QQ空间日志
- How to Compile Android on Ubuntu (12.04)
- java 泛型 E/T/K/V/N 代表的意义
- 设置session
- [深入理解C++(一)]类型转换(Type Casting)
- 最长公共子序列