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

2014-11-24 02:43:02 · 作者: · 浏览: 0

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


view plaincopy to clipboardprint







增加一个FactoryBean的自定义类。

view plaincopy to clipboardprint

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的专栏”