hai最近因为产品上线导致一段时间没有更新,从今天开始恢复两天一更新的状态,望大家多多关注。
继续接着我们上次所说的来讲解,使用注解装配。在Spring 中容器 是默认禁用注解装配。我们需要在使用注解装配前将其启用。最简单的方式是使用<context:annotation-config>元素,如图所示,在beans上直接配置自动扫描
配置好完成后,我们就可以在代码中使用注解的方式。来装配。
Spring3知己以下几种自动装配的注解:1 Spring自带的@Autowired注解 2 JSR-330的@Inject注解 3JSR-250的@Resource注解
首先介绍的是@Autowired注解:如图所示我们可以在方法上使用注解
使用该注解 会执行ByType自动装配。我们不仅可以标注在方法上还可以标注在属性上并且删除setter方法
但是我们在使用过该注解时会出现一些麻烦,比如没有匹配到Bean或者匹配到多个Bean就会,就会直接抛出异常。导致错误。
我们在装配的时候属性不一定需要装配我们可以在使用注解时加上required=false属性来人让其属性值为Null
但是该方法在使用的时候有个需要注意的点是,在使用构造器装配时,只有一个构造器可以使requeired=true;其他只能设置成false。
第二种方式注入:
借用@Inject实现标准的自动装配
这个注解跟@Autowired一样;但是有一点因为他没有required属性那么所以来的关系必须存在,如果不存在就会出现异常。
除了该注解,JSR-330还提供了了另外一个方式,在注入@Inject时注入一个Provider例如
这样我们就可以得到其作用域,或得到不同的对象,自我感觉使用这个没有使用Spring自带的方便(ps个人感觉,可能开发的时候使用自带比较多的缘故)。就如我们刚才在上面所说的他们两者有很多的共同点,@Autowired中还有@Qualifier属性,在@Inject中也有类似的属性是使用的@Name注解。
@Qualifier帮助我们缩小了所匹配的Bean的范围,而@Name通过Bean的ID来标识可选择的Bean。
两种注入方式就先说到这里,本文章只是简单的总结一些用法。简单的了解注入的不同。
除了这些注入之外,我们还有自动检测Bean的需求
<context:component-scan>标签元素会扫描制定包内 的自动注册Spring Bean的类。
他是如何实现的呢,是因为我们会在包中扫描到以下注解
只要在Bean上制定这些注解,那么Spring在扫描的时候会主动为其注入。
关于自动注入的就写到这里,有其他的注解在这里没有写到的请看Spring官方文档解释。
下一章我们将开始介绍面向切面的Spring。