1.在spring早期,是用哪种方式?
xml配置。早期的时候spring和xml是同义词,所以被很多人诟病。
2.现在还为什么需要学习xml配置方式?
因为有很多老项目需要你维护啊。
3.配置xml被人诟病的原因?
一是有很多不必要的学习成本,比如xmlns规定了beans里边可以出现哪些节点元素这种繁琐的知识。
而是配置bean的时候不像注解只需要一个表识就可以了,还需要写类本身的很多信息。
4.xml如何定义一个bean?
相当于javaConfig的@Bean。
最简单的方式,这个时候没有写bean id,默认的bean id就是其完整类名。
添加bean id:
getBean的时候使用bean id:
或者用autowired来关联bean,变量名和bean id对应上就自动注入了:
或者可以用@Qualifier指定bean id:
5.name属性和id属性有什么不一样?
id是唯一标识,name是名称(类比于人的化就是id是身份证号,name是你的名字,或小名)。
name可以有多个,name属性有空格/逗号分隔的时候,每个部分都是一个别名:
id是只能有一个的,没法分隔出来多个的。
6.构造函数依赖注入如何配置?
constructor-arg构造函数依赖注入:
c名称空间:
c:cd-ref="compctDisc2",c:表示c名称空间,cd表示构造函数的参数名,-ref表示注入的是另外一个bean的引用。
除了用构造函数的参数名,还可以用参数位置,_0表示第一个参数:
7.简单类型如何装配?
上边讲的都是对象引用的装配,那我们怎么装配简单类型呢?
name指定了参数的名字:
也可以用index指定了参数的位置:
也可以用c名字空间:
8.如何注入list类型?
简单类型:
对象引用:
9.如何注入set类型?
10.如何注入map类型?
简单类型:
对象引用:
11.如何注入数组类型?
12.上面讲的都是构造函数注入,那么怎么做属性注入?
简单类型:
数组:
spring还提供了更为简洁的p名称空间(c代表constructor, p代表property),来简化属性注入。
但是p空间不支持数组或集合的属性注入。
13.util名称空间?
p空间不支持数组或集合的属性注入,可以用util空间来解决。
先启用:
使用:
14.总结
三种装配方式可以混合使用。