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>
类:B001
类: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,这个是怎么实现的呢?
希望大家可以想一下。
后续分享~~~~~~~~~~~~~