通过xml文件配置
-
根据类型自动装配
如果一个bean的数据类型和其他bean属性的数据类型相同,可以自动兼容装配它,过程如下:
1.存在如下两个bean:dao和service
public class Dao{
private Dao dao;
........
}
public class Service{
private Service service;
........
}
通常情况下,我们使用明确装配,即为每一个bean单独创建配置并注入属性。当启用根据类型装配的时候,可以保留一个bean的属性未设置,spring会根据相同的数据类型自动装配它。
<bean id="dao" class="club.guyanliang.Dao" autowire="byType" />
<bean id="service" class="club.guyanliang.Service" >
<property name="skill" value="Invisible" />
</bean>
需要注意的是,在根据类型自动装配的情况下,必须保证Bean只有一个唯一的数据类型声明,否则会报错UnsatisfiedDependencyException。
-
根据名字自动装配
还是以上Dao和Service两个bean为例:
<bean id="dao" class="Dao"/>
<bean id="service" class="Service" autowire="byName"/>
通过名字装配,无需再声明属性标记,spring会在service中寻找是否存在dao这个属性,再去IOC容器中寻找dao对象,如果有的话就装配。
使用注解自动装配
-
@Autowired
通常应用于一下场景:
- 构造函数
- 成员变量
- Setter方法
- 普通方法
要启用Autowired注解,首先我们要引入约束以及开启注解扫描
<beans
//...
xmlns:context="http://www.springframework.org/schema/context"
//...
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
//...
<context:annotation-config />
//...
</beans>
具体实现场景就不在此赘述,创建对象还有三个注解:
- @Controller
- @Service
- @Repository
目前这三个注解和autowired的作用时一样的,另外使用自动装配时,如果在应用上下文中,对应类型的Bean有且只有一个,则会自动装配到该属性上。