Spring初入配置~六

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

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

来自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实战第三版

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

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

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

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


来自Spring实战第三版

<context:component-scan>标签元素会扫描制定包内 的自动注册Spring Bean的类。

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


来自Spring实战第三版

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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容