最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

Spring IOC官方文档学习笔记(七)之Bean Definition继承

来源:博客园


(资料图片仅供参考)

1.Bean Definition继承

(1) Spring中的bean存在层级关系,我们可以定义子bean来继承或覆盖父bean中的某些属性,从而节省编码,在此处Spring运用到了模板设计模式,如下所示

//自定义了2个bean,ExampleA和ExampleB,注意,它们之间不存在继承关系,我们这里的继承注意是Bean Definition继承,也就是一个bean的一些属性值可能跟另一个bean的某些属性值相同,然后通过Bean Definition继承来减少编码,复用一下属性值,仅此而已public class ExampleA {    private String name;    private int age;    public void setName(String name) {        this.name = name;    }    public void setAge(int age) {        this.age = age;    }    @Override    public String toString() {        return "ExampleA{" +                "name="" + name + "\"" +                ", age=" + age +                "}";    }}public class ExampleB {    private String name;    private int age;    public void setName(String name) {        this.name = name;    }    public void setAge(int age) {        this.age = age;    }    @Override    public String toString() {        return "ExampleB{" +                "name="" + name + "\"" +                ", age=" + age +                "}";    }}                                                //打印这两个bean,可以看到子bean exampleB中的age属性值继承了父bean exampleA的age属性值,两个值都是一样的,为20,此外exampleB还覆盖了父bean中的name属性值,为exampleB,而非exampleAExampleA{name="exampleA", age=20}ExampleB{name="exampleB", age=20}

子bean可以继承并添加父bean中的scope, constructor argument values, property values以及method overrides from the parent,同时子bean也可以覆盖掉父bean中的scope, initialization method, destroy method或者是static factory method settings为自己指定的值,其余的一些属性如:depends on, autowire mode, dependency check, singleton以及lazy init全部都取决于子bean而与父bean无关

(2) 模板父bean

                                            

关键词: 仅此而已 都是一样的 配置文件