zoukankan      html  css  js  c++  java
  • Spring点滴六:Spring中定义bean的继承

         在基于XML配置元数据中,bean标签可以包含很多配置信息,可以包含构造函数的参数,属性值以及其他一些初始化方法。子bean的定义可以继承父bean定义元数据,子bean定义可以根据需要重写父bean属性值或者添加一些其他属性。

         Spring bean中的继承和Java中继承无关,只是继承的思想一致。可以把父bean作为一个定义模板,供其他子bean使用。

    示例:

    spring-beans.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="parent" class="com.test.spring.Parent"> <property name="message1" value="This is parent message1"></property> <property name="message2" value="This is parent message2"></property> </bean>
    <!-- 使用parent属性来引用父bean --> <bean id="children" class="com.test.spring.Children" parent="parent">
    <!-- 直接引用父bean中message1属性--> <property name="message1" value="This is parent message1"></property>
    <!-- 重写父bean中message2属性--> <property name="message2" value="This is children message2"></property>
    <!-- 子bean中添加了message3属性--> <property name="message3" value="This is children message3"></property> </bean> </beans>

    Java 类:

    package com.test.spring;
    
    public class Parent {
        private String message1;
        private String message2;
    
        public String getMessage1() {
            return message1;
        }
    
        public void setMessage1(String message1) {
            this.message1 = message1;
        }
    
        public String getMessage2() {
            return message2;
        }
    
        public void setMessage2(String message2) {
            this.message2 = message2;
        }
    
        @Override
        public String toString() {
            return "Parent [message1=" + message1 + ", message2=" + message2 + "]";
        }
    
    }
    ----------------------------------------------------------------------------------------------------------------------------------------------------- package com.test.spring; public class Children { private String message1; private String message2; private String message3; public String getMessage1() { return message1; } public void setMessage1(String message1) { this.message1 = message1; } public String getMessage2() { return message2; } public void setMessage2(String message2) { this.message2 = message2; } public String getMessage3() { return message3; } public void setMessage3(String message3) { this.message3 = message3; } @Override public String toString() { return "Children [message1=" + message1 + ", message2=" + message2 + ", message3=" + message3 + "]"; } }

    测试:

    package com.test.spring;
    
    import org.junit.Before;
    import org.junit.Test;
    import org.springframework.context.support.AbstractApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class T {
        AbstractApplicationContext applicationcontext=null;
        @Before
        public void before() {
            System.out.println("》》》Spring ApplicationContext容器开始初始化了......");
            applicationcontext= new ClassPathXmlApplicationContext(new String[]{"test1-service.xml"});
            System.out.println("》》》Spring ApplicationContext容器初始化完毕了......");
        }
        @Test
        public void  test() {
            //BeanLifecycle beanLifecycle =applicationcontext.getBean("beanLifecycle",BeanLifecycle.class);
            //applicationcontext.close();
            //applicationcontext.registerShutdownHook();  
            Parent parent=applicationcontext.getBean(Parent.class);
            System.out.println(parent);
            Children children=applicationcontext.getBean("children", Children.class);
            System.out.println(children);
        }
    }

    测试结果:

    》》》Spring ApplicationContext容器开始初始化了......
    2017-03-19 12:54:55  INFO:ClassPathXmlApplicationContext-Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@5facc36f: startup date [Sun Mar 19 12:54:55 CST 2017]; root of context hierarchy
    2017-03-19 12:54:55  INFO:XmlBeanDefinitionReader-Loading XML bean definitions from class path resource [test1-service.xml]
    》》》Spring ApplicationContext容器初始化完毕了......
    Parent [message1=This is parent message1, message2=This is parent message2]
    Children [message1=This is parent message1, message2=This is children message2, message3=This is children message3
  • 相关阅读:
    android 圆角图片的实现
    navigationView 的使用和布局文件的绑定
    android listview 的监听事件
    android第三方框架 xlistview 的使用
    android Baseadapter 和 ViewHolder的使用
    android 调用电话功能
    android 颜色对照
    Android_menu_SubMenu
    Android_menu_optionMenu
    Android_Menu_contextMenu
  • 原文地址:https://www.cnblogs.com/sishang/p/6579868.html
Copyright © 2011-2022 走看看