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