spring不同容器之间如何调用

mybean.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:util="http://www.springframework.org/schema/util"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd"
	default-autowire="byName">
	<bean name="b001" class="com.alibaba.zj.spring.bean.B001" init-method="init">
		<property name="name" value="kksadjksajk" />
	</bean>

	<bean name="b001PostProcessor" class="com.alibaba.zj.spring.beanpost.B001PostProcessor"></bean>
</beans>
	


mybean1.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:util="http://www.springframework.org/schema/util"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd"
	default-autowire="byName">
	<bean name="b002" class="com.alibaba.zj.spring.bean.B002" init-method="init">
		<property name="name" value="bbbbbbbbbbbbb" />
		<property name="bf001" ref="b001"/>
	</bean>
</beans>

类: B001


package com.alibaba.zj.spring.bean;

public class B001 {
    private String name;

    public void init(){
        System.out.println("B001 init........");
    }
    
    public String getName() {
        return name;
    }

    
    public void setName(String name) {
        this.name = name;
    }
    
}

类: B002.java

package com.alibaba.zj.spring.bean;

public class B002 {
    private String name;
    private B001 b001;
    public void init(){
        System.out.println("B002 init........");
    }
    
    public String getName() {
        System.out.println(b001.getName());
        return name;
    }

    
    public void setName(String name) {
        this.name = name;
    }

    
    public B001 getB001() {
        return b001;
    }

    
    public void setB001(B001 b001) {
        this.b001 = b001;
        System.out.println("B001 注入...");
    }
    
}

B001PostProcessor.java

package com.alibaba.zj.spring.beanpost;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;


public class B001PostProcessor implements BeanPostProcessor {

    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("B001PostProcessor postProcessAfterInitialization...");
        return bean;
    }

    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("B001PostProcessor postProcessBeforeInitialization...");
        return bean;
    }

}


调用类:Run

package com.alibaba.zj.spring;

import org.springframework.context.ApplicationContext;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.AbstractRefreshableConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

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

public class Run {

    /**
     * @param args
     */
    public static void main(String[] args) {
       ApplicationContext ctx = new ClassPathXmlApplicationContext("mybean.xml");
       
       ConfigurableApplicationContext ctx1 = new ClassPathXmlApplicationContext();
       
       ctx1.setParent(ctx);
       
       ((AbstractRefreshableConfigApplicationContext)ctx1).setConfigLocation("mybean1.xml");
       ctx1.refresh();
       B001 b001= (B001)ctx.getBean("b001");
       System.out.println(b001.getName());
       b001.setName("ddddddddddddddddd");
       
       B002 b002 = (B002)ctx1.getBean("b002");
       System.out.println(b002.getName());
    }

}


上面代码主要实现不同的ClassPathXmlApplicationContext容器加载,相互可以调用,mybean1.xml中的b002可以调用mybean.xml中的b001,这个是怎么实现的呢?

希望大家可以想一下。


后续分享~~~~~~~~~~~~~



  




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值