基于XML的DI
三、集合属性注入(包含:为数组注入值、为List注入值、为Set注入值、为Map注入值、为Properties注入值)
集合类定义如下:
xml定义如下:仔细看
下面是执行代码:
四、对于域属性的自动注入(包括:byName方式自动注入、byType方式自动注入)
概念如下:
1、byName方式自动注入
之前xml是这样配置的类里面包括类的成员变量的,如下图,下面画红线的是和上面的mySchool联系在一起
下面是基于byName方式的自动方式注入,注意:是自动,再说一遍,是自动,自动意思就是上面图片的画红线部分就不需要了,在bean 节点上配置autowire=“byName”,如下图有说明
下面是执行代码
2、byType方式自动注入
执行代码如下:
五、使用SPEL注入(SPEL即:Spring EL表达式语言,SPEL表达式方式以#开头,后跟一对大括号)
概念如下:
具体怎么使用如下:
Person类如下
具体执行如下:
六、使用内部Bean注入
若不希望代码直接访问某个bean,即,在代码中通过getBena()方法获取该Bean实例,则可将该Bean的定义放入调用者bean定义的内部。
问题如下,因为这个mySchool是属于student这个方法内部的类,所以不想让只用getBean()方法直接获取mySchool这个实例,如下这样写,这样外部就访问不了School这个类了。
下面是之前的配置,可以做一个对比,主要还是想说明上图的内部Bean的配置
七、使用同类抽象Bean注入
Student.java
修改之前的xml如下:
执行如下:
八、使用异类抽象Bean注入
Teacher.java
具体执行如下:
九、为应用指定多个Spring配置文件(包括:平等关系的配置文件、包含关系的配置文件)(重点)
1、平等关系的配置文件
把如下这个图片中的xml分成两个
第一个xml文件是spring-base.xml,如下图
第二个xml文件是spring-beans.xml,如下图:
具体执行如下:
2、包含关系的配置文件
applicationContext.xml包含spring-base和spring-beans这个两个xml文件
如下图
配置applicationContext.xml如下:
具体执行如下: