Spring初入配置~六

hai最近因为产品上线导致一段时间没有更新,从今天开始恢复两天一更新的状态,望大家多多关注。

继续接着我们上次所说的来讲解,使用注解装配。在Spring 中容器 是默认禁用注解装配。我们需要在使用注解装配前将其启用。最简单的方式是使用元素,如图所示,在beans上直接配置自动扫描

Spring初入配置~六_第1张图片
来自Spring实战第三版

配置好完成后,我们就可以在代码中使用注解的方式。来装配。

Spring3知己以下几种自动装配的注解:1 Spring自带的@Autowired注解  2 JSR-330的@Inject注解 3JSR-250的@Resource注解

首先介绍的是@Autowired注解:如图所示我们可以在方法上使用注解

来自Spring实战第三版

使用该注解 会执行ByType自动装配。我们不仅可以标注在方法上还可以标注在属性上并且删除setter方法


来自Spring实战第三版

但是我们在使用过该注解时会出现一些麻烦,比如没有匹配到Bean或者匹配到多个Bean就会,就会直接抛出异常。导致错误。

我们在装配的时候属性不一定需要装配我们可以在使用注解时加上required=false属性来人让其属性值为Null


来自Spring实战第三版

但是该方法在使用的时候有个需要注意的点是,在使用构造器装配时,只有一个构造器可以使requeired=true;其他只能设置成false。

第二种方式注入:

借用@Inject实现标准的自动装配


来自Spring实战第三版

这个注解跟@Autowired一样;但是有一点因为他没有required属性那么所以来的关系必须存在,如果不存在就会出现异常。

除了该注解,JSR-330还提供了了另外一个方式,在注入@Inject时注入一个Provider例如


Spring初入配置~六_第2张图片
来自Spring实战第三版

这样我们就可以得到其作用域,或得到不同的对象,自我感觉使用这个没有使用Spring自带的方便(ps个人感觉,可能开发的时候使用自带比较多的缘故)。就如我们刚才在上面所说的他们两者有很多的共同点,@Autowired中还有@Qualifier属性,在@Inject中也有类似的属性是使用的@Name注解。

@Qualifier帮助我们缩小了所匹配的Bean的范围,而@Name通过Bean的ID来标识可选择的Bean。

两种注入方式就先说到这里,本文章只是简单的总结一些用法。简单的了解注入的不同。

除了这些注入之外,我们还有自动检测Bean的需求


Spring初入配置~六_第3张图片
来自Spring实战第三版

标签元素会扫描制定包内 的自动注册Spring Bean的类。

他是如何实现的呢,是因为我们会在包中扫描到以下注解


Spring初入配置~六_第4张图片
来自Spring实战第三版

只要在Bean上制定这些注解,那么Spring在扫描的时候会主动为其注入。

关于自动注入的就写到这里,有其他的注解在这里没有写到的请看Spring官方文档解释。

下一章我们将开始介绍面向切面的Spring。

你可能感兴趣的:(Spring初入配置~六)