13.0、注解实现自动装配_@Autowired_@Resource

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的方式实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值