13.0注解实现自动装配
Jdk1.5支持的注解,spring2.5就支持注解了!
要使用注解须知:
1.导入上下文约束
2 .配置注解的支持:<context:annotation-config/>(很容易忘记添加此注解)
@Autowired的属性:
1.@Autowired 可以直接在属性上使用!也可以在set方法上使用
2.使用Autowired我们可以不用编写Set方法了,前提是你这自动装配的属性在IOC(Spring)容器中存在,且符合名字byType
3.@Autowired(required = faulse)表示该属性可以为空,为空也不会报错,required :必填
4.@Nullable 加上这个注解之后,就算形参为空也不会报错
例:
public people(@Nullable String name) {
this.name = name;
}
5.@Autowired可以和@Qualifier(value = “name”)组合使用,该情况是当容器中bean的class无法匹配到的时候加入@Qualifier(value = “name”)这个注解后可以指定一个bean id来自动注入。
我们在开发中在Controller控制层中会频繁的用到@Autowired来自动注入Service层的接口实现类中,这样就相当于在Controller类中自动注入了这个属性,就可以使用了~
@Service 将 serverimpl.java 封装成 bean 注入到 spring 容器中后,controller 层也同样会被 @Controller 封装成 bean 注入到 spring 容器中,这时 controller 层中如果有被 @Autowired 注解注释的类对象 -> 将会默认以 bytype 的方式去 spring 容器中寻找一个与该对象类型相同的 bean,然后将找到的 类型 的 对象 赋给 controller 中那个被 @Autowired 注释的对象,就完成了自动注入~
【注意:这里自动注入相当于写了一个 set(Service service) { this.service = service } 方法,将找到的 类型的对象 赋给 被Autowired 注释的对象】
@Resource的属性:
@Resource注解:默认先通过byName的方式实现,如果找不到名字,则通过bytype来实现;如果两个都不能找到的情况下,就报错。
小结:
@Resource和Autowired的区别:
· 都是用来装配的,都可以放在属性字段上
· @Autowired默认先通过byType的方式实现,如果找不到在使用byName,而且必须要求这个对象存在!【常用】
· @Resource默认通过byName的方式实现,如果找不到名字则通过byType实 现!如果两个都找不到的情况下,就报错【常用】
· 执行顺序不同:@Autowired通过byType的方式实现。@Rsource默认通过 byName的方式实现
1598

被折叠的 条评论
为什么被折叠?



