当前位置:编程学习 > JAVA >>

spring中基于BeanFactoryAware动态替换指定的bean

这个是applicationContext.xml的配置文件,如何做到修改b002中b001这个属性。

 


view plaincopy to clipboardprint?<bean name="b002" class="com.alibaba.zj.spring.bean.B002" init-method="init"> 
        <property name="name" value="bbbbbbbbbbbbb" /> 
        <property name="b001" ref="b001"/> 
    </bean> 
<bean name="b002" class="com.alibaba.zj.spring.bean.B002" init-method="init">
  <property name="name" value="bbbbbbbbbbbbb" />
  <property name="b001" ref="b001"/>
 </bean>
增加一个FactoryBean的自定义类。

view plaincopy to clipboardprint?<bean name="b001FactoryBean" class="com.alibaba.zj.spring.factorybean.B001FactoryBean"></bean> 
<bean name="b001FactoryBean" class="com.alibaba.zj.spring.factorybean.B001FactoryBean"></bean>

 

 

 

java代码:如下:

 

 

 

view plaincopy to clipboardprint?package com.alibaba.zj.spring.factorybean; 
 
import org.springframework.beans.BeansException; 
import org.springframework.beans.factory.BeanFactory; 
import org.springframework.beans.factory.BeanFactoryAware; 
import org.springframework.beans.factory.FactoryBean; 
import org.springframework.beans.factory.InitializingBean; 
 
import com.alibaba.zj.spring.bean.B001; 
import com.alibaba.zj.spring.bean.B002; 
 
 
public class B001FactoryBean implements FactoryBean ,InitializingBean,BeanFactoryAware { 
 
    private BeanFactory beanFactory; 
    private B001 b001; 
    @Override 
    public Object getObject() throws Exception { 
        return b001;  
    } 
 
    @Override 
    public Class getObjectType() { 
        return B001.class; 
    } 
 
    @Override 
    public boolean isSingleton() { 
        return true; 
    } 
 
     
    public B001 getB001() { 
        return b001; 
    } 
 
    @Override 
    public void afterPropertiesSet() throws Exception { 
       this.b001 = new B001(); 
       this.b001.setName("FactoryBean Created me"); 
    } 
 
    @Override 
    public void setBeanFactory(BeanFactory beanFactory) throws BeansException { 
        this.beanFactory = beanFactory; 
    } 
 
     
    public BeanFactory getBeanFactory() { 
        return beanFactory; 
    } 
     
 
     

package com.alibaba.zj.spring.factorybean;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.BeanFactoryAware;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.InitializingBean;

import com.alibaba.zj.spring.bean.B001;
import com.alibaba.zj.spring.bean.B002;


public class B001FactoryBean implements FactoryBean ,InitializingBean,BeanFactoryAware {

    private BeanFactory beanFactory;
    private B001 b001;
    @Override
    public Object getObject() throws Exception {
        return b001;
    }

    @Override
    public Class getObjectType() {
        return B001.class;
    }

    @Override
    public boolean isSingleton() {
        return true;
    }

   
    public B001 getB001() {
        return b001;
    }

    @Override
    public void afterPropertiesSet() throws Exception {
       this.b001 = new B001();
       this.b001.setName("FactoryBean Created me");
    }

    @Override
    public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
        this.beanFactory = beanFactory;
    }

   
    public BeanFactory getBeanFactory() {
        return beanFactory;
    }
   

   
}

 作者“thisisvoa的专栏”

补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,