目录
Spring的核心技术IOC(Intorol of Converse控制反转)的实现途径是DI(dependency Insert依赖注入)。而依赖注入(DI)的实现方式又有两种,xml方式和注解方式。如下图所示:
set注入和构造注入,这两种方法,是我们在第一次接触Spring的时候,最先学习使用Spring容器创建对象并赋值的方式。具体的代码及详细解释我已经写在了我前一篇的文章里,这里的链接:点进去就能看到很仔细的set注入和构造注入的详细介绍和使用方法。
在我们学习完set注入和构造注入之后,我们可能会发现,要是某个类的引用属性,也是其他类的属性的时候,若我们使用大量的使用
- <beans>
-
- <bean id="a" class="">
- <property name="" value=""/>
- <property name="11" ref="22"/>
- bean>
-
- <bean id="b" class="">
- <property name="" value=""/>
- <property name="11" ref="22"/>
- bean>
-
-
- <bean id="c" class="">
- <property name="" value=""/>
- <property name="11" ref="22"/>
- bean>
-
-
- <bean id="d" class="">
- <property name="" value=""/>
- <property name="11" ref="22"/>
- bean>
-
-
- beans>
上面的写法就很冗余,那么有简单的写法吗?当然有,这种简便的方法就是自动注入。
下面紧挨着的代码就是自动注入中的byName方式。
byName自动注入的特点就是,在
- <bean id="" class="" type="byName">
- <property name="" value=""/>
- <property name="" ref=""/>
- bean>
-
byName自动注入的使用要求:
- <bean>
- <property name="" value=""/>
- <property name="" ref=""/>
- bean>
不支持构造注入。
- <bean>
- <constructor-arg name="" value=""/>
- bean>
答案是:当Spring发现你使用了byName这种自动注入的时候,它会自动去寻找当前
下面紧挨着的代码就是自动注入中的byType方式。
byType自动注入的特点就是,在
- <bean id="" class="" type="byType">
- <property name="" value=""/>
- <property name="" ref=""/>
- bean>
-
byType自动注入的使用要求:
支持set注入:如下所示
- <bean>
- <property name="" value=""/>
- <property name="" ref=""/>
- bean>
不支持构造注入:如下所示
- <bean>
- <constructor-arg name="" value=""/>
- bean>
- <bean id="" class="">
- <property name="" value=""/>
- <property name="" ref=""/>
- bean>
答案是:Spring在见到byType自动注入的时候,会自动匹配其他的
!!注意!!:
由于Spring是单例模式,所以在使用自动注入给引用类型的属性匹配的