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


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


<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的自定义类。

<bean name="b001FactoryBean" class="com.alibaba.zj.spring.factorybean.B001FactoryBean"></bean>



java代码:如下:



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

    
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值