Spring父子工厂

对于Spring的父子工厂:

  1. 父工厂和子工厂的配置会整合在一起
  2. 如果父子工厂中存在相同的配置,会采用子工厂的配置

代码:

父工厂applicationContext-parent.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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="p" class="edu.hzb.first.Person">

    </bean>

    <bean id="user" class="edu.hzb.first.User">
        <property name="id" value="2"/>
        <property name="name" value="jeremy"/>
    </bean>
</beans>

子工厂applicationContext-child.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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="user" class="edu.hzb.first.User">
        <property name="id" value="1"/>
        <property name="name" value="hzb"/>
    </bean>
</beans>

测试代码:

@Test
    public void test3() {
        //父容器
        DefaultListableBeanFactory parent = new DefaultListableBeanFactory();
        XmlBeanDefinitionReader xmlBeanDefinitionReader = new XmlBeanDefinitionReader(parent);
        xmlBeanDefinitionReader.loadBeanDefinitions(new ClassPathResource("applicationContext-parent.xml"));

        //子容器
        DefaultListableBeanFactory child = new DefaultListableBeanFactory(parent);
        XmlBeanDefinitionReader xmlBeanDefinitionReader1 = new XmlBeanDefinitionReader(child);
        xmlBeanDefinitionReader1.loadBeanDefinitions(new ClassPathResource("applicationContext-child.xml"));

        Person p = (Person) child.getBean("p");
        User user = (User) child.getBean("user");
        System.out.println(p);
        System.out.println(user);
	   //这个user仍然是子容器中的user
        User user1 = (User) parent.getBean("user");
        System.out.println(user);

    }

学习哔哩哔哩《孙哥讲Spring5》视频所做的笔记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值