Spring支持两种依赖注入方式,分别是属性注入和构造函数注入。除此之外,Spring还支持工厂方法注入方式。
属性注入
通过set方法注入Bean的属性值或者依赖对象。是实际应用中最常采用的注入方式。
Spring只会检查Bean中是否有对应的Setter方法,至于Bean中是否有对应的属性变量则不做要求。
一般情况下,Java的属性变量名都以小写字母起头。但也存在特殊情况,考虑到一些特定意义的大写英文缩略词(USA、XML等),JavaBean也允许大写字母起头的属性变量名,不过必须满足“变量的前两个字母要么全部大写,要么全部小写”的要求。
构造函数注入
它保证一些必要的属性在Bean实例化时就得到设置。
按类型匹配入参
1 | <constructor-arg type=""> |
两个参数相同类型就会出问题
按索引匹配入参
1 | <constructor-arg index="" value="" /> |
能解决按类型匹配入参会遇到的问题。但两个构造方法参数个数相同会出现问题
联合使用类型和索引匹配入参
1 | <constructor-arg index="" type=""><value></value></constructor-arg> |
能解决按索引匹配入参会遇到的问题。
工厂方法注入
非静态工厂方法
1 | <bean id="carFactory" class="" /> |
静态工厂方法
1 | <bean id="car" class=""(工厂类) factory-method="createCar" /> |