Spring框架有两个注释用来依赖注入
@Required:依赖检查
基于@Required的依赖检查表示注解的setter方法必须,即必须通过在XML配置中配置setter注入,如果没有配置在容器启动时会抛出异常从而保证在运行时不会遇到空指针异常,@Required只能放置在setter方法上,且通过XML配置的setter注入,可以使用如下方式来指定:
- @Requried
- setter方法
@Autowired:自动装配
- @Autowired(required=true)
- 构造器、字段、方法
@Autowired默认是根据参数类型进行自动装配,且必须有一个Bean候选者注入,如果允许出现0个Bean候选者需要设置属性“required=false”,“required”属性含义和@Required一样,只是@Required只适用于基于XML配置的setter注入方式。
也可以在配置文件中配置bean的autowire属性为自动装配,但是这种方式有可能装配我们不想装配的属性或者对象。所以一般不采用。
<bean id ="personService", class = "com.web.service.PersonServiceBean", autowire = "byType">
可以有四种自动装配方式
1. byType:
2.byName:
3.constructor 与byType类似 不同的是它应用于构造参数,如果在容器中没有找到与构造参数类型一致的bean的话,则装配的属性值为null
4.autoDetect:通过类的自省机制(introspection)来决定是使用constructor还是byType方式进行装配,如果发现默认的构造器,那么将使用byType方式装配
Reference:http://www.iteye.com/topic/1121784