关注JEECG发展历程 关注最新动态和版本, 记录JEECG成长点滴 更新日志 - 技术支持 - 招聘英才

JEECG最新版本下载 JEECG智能开发平台 - 显著提高开发效率 常见问题 - 入门视频 - 参与开源团队

商务QQ: 69893005、3102411850 商务热线(5*8小时): 010-64808099 官方邮箱: jeecgos@163.com

查看: 6089|回复: 0

spring中注册bean(通过代码动态注册)

[复制链接]
发表于 2013-8-30 15:30:43 | 显示全部楼层 |阅读模式
[java] view plaincopyprint?

  • //将applicationContext转换为ConfigurableApplicationContext   
  • ConfigurableApplicationContext configurableApplicationContext = (ConfigurableApplicationContext) applicationContext;  
  •   
  • // 获取bean工厂并转换为DefaultListableBeanFactory   
  • DefaultListableBeanFactory defaultListableBeanFactory = (DefaultListableBeanFactory) configurableApplicationContext  
  •         .getBeanFactory();  
  •   
  • // 通过BeanDefinitionBuilder创建bean定义   
  • BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder  
  •         .genericBeanDefinition(UserService.class);  
  • // 设置属性userAcctDAO,此属性引用已经定义的bean:userAcctDAO   
  • beanDefinitionBuilder  
  •         .addPropertyReference("userAcctDAO", "UserAcctDAO");  
  •   
  • // 注册bean   
  • defaultListableBeanFactory.registerBeanDefinition("sdfds",  
  •         beanDefinitionBuilder.getRawBeanDefinition());  

                //将applicationContext转换为ConfigurableApplicationContext                ConfigurableApplicationContext configurableApplicationContext = (ConfigurableApplicationContext) applicationContext;                                // 获取bean工厂并转换为DefaultListableBeanFactory                DefaultListableBeanFactory defaultListableBeanFactory = (DefaultListableBeanFactory) configurableApplicationContext                                .getBeanFactory();                                // 通过BeanDefinitionBuilder创建bean定义                BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder                                .genericBeanDefinition(UserService.class);                // 设置属性userAcctDAO,此属性引用已经定义的bean:userAcctDAO                beanDefinitionBuilder                                .addPropertyReference("userAcctDAO", "UserAcctDAO");                                // 注册bean                defaultListableBeanFactory.registerBeanDefinition("sdfds",                                beanDefinitionBuilder.getRawBeanDefinition());User.java

[java] view plaincopyprint?

  • 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;  
  •     }  
  •   
  • }  

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

[java] view plaincopyprint?

  • 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;  
  •     }  
  • }  

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
[java] view plaincopyprint?

  • 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());  
  •     }  
  • }  

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


[html] view plaincopyprint?

  • <?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>  

<?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--------------------
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表