文档章节

Spring实战3-最小化Spring XML配置

huntering
 huntering
发布于 2015/08/10 21:58
字数 749
阅读 93
收藏 6

显式装配

自动装配Bean属性

一共有四种自动装配类型(需要在Bean配置里添加autowire属性来指定用哪种类型)

  • byName-把与Bean的属性具有相同名字或ID的其他Bean自动装配到Bean的对应属性中。如果没有跟属性的名字相匹配的Bean,则该属性不进行装配。--实际上对比的是Bean ID。

  • byType-把与Bean的属性具有相同类型的其他Bean自动装配到Bean的对应属性。如果没有跟属性的类型相匹配的Bean,则该属性不被装配。局限性如果Spring找到多个Bean,它们的类型都与需要自动装配的属性的类型相匹配,这个时候SPring不会猜测哪一个更适合,而是抛出异常。不过提供了如下参数来指定用哪个Bean来注入。<bean>元素的primary属性。如果该值为true,那么该Bean将比其他候选Bean优先被选择。默认都是true。如果希望排除某些Bean作为候选者,那么可以设置它们的autowire-candidate属性为false.则它们都会被忽略作为候选Bean.

  • constructor-把与Bean的构造器入参具有相同类型的其他Bean自动装配到Bean构造器的对应入参中。

  • autodetect-首先尝试使用constructor进行自动装配,如果失败,则再尝试使用byType进行自动装配。

使用注解装配

2.5引入注解装配,与在XML中使用autowire属性自动装配无太大差别。默认禁用注解装配。若需使用,则需要在spring中启用它。<context:annotation-config/>.spring支持如下几种用于自动装配的注解

  1. Spring自带的@Autowired注解

  2. JSR-330的@Inject注解

  3. JSR-250的@Resource注解

1:使用@Autowired注解:可以标注于setter方法,标注于需要自动装配Bean引用的任意方法;甚至可以标注构造器;还可以直接标注属性,并删除setter方法,甚至都不会受限于private关键字。

有两种局限:没有匹配的Bean,或者存在多个匹配的Bean.

a)可选的自动装配。 默认情况下,@Autowired具有强契约特征,其所标注的属性或参数必须是可装配的。如果没有Bean可以装配到@Autowired锁标注的属性或参数中,自动装配就会失败。属性亦可设置成null,通过设置该注解的required属性为false来配置自动装配是可选的。

b)限定歧义性的依赖:当有多个Bean都完全满足装配条件,并且都可以被装配到属性或参数中的情况时,为了帮助@Autowired鉴别出哪一个Bean才是所需要的,可以使用限定器注解@Qualifier。我们亦可以自定义限定器(Qualifier)


© 著作权归作者所有

共有 人打赏支持
huntering
粉丝 10
博文 91
码字总数 9676
作品 0
珠海
高级程序员
私信 提问
Spring Boot 最核心的 3 个注解详解

最近面试一些 Java 开发者,他们其中有些在公司实际用过 Spring Boot, 有些是自己兴趣爱好在业余自己学习过。然而,当我问他们 Spring Boot 最核心的 3 个注解是什么,令我失望的是鲜有人能答...

Java技术栈
2018/10/16
0
0
新书上架:《Spring Boot 开发实战》(基于 Kotlin + Gradle + Spring Boot 2.0 的企业级服务端开发实战)

新书上架:《Spring Boot 开发实战》 — 基于 Kotlin + Gradle + Spring Boot 2.0 的企业级服务端开发实战 京东下单链接 https://item.jd.com/31178320122.html 天猫下单链接 https://detail...

程序员诗人
2018/08/05
0
0
【Spring Boot 开发实战】第3讲 Kotlin扩展函数

Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。在 Java 开发领域的诸多著名框架:Spring 框架及其衍生框架、做缓存Redis、消息...

程序员诗人
2018/04/20
0
0
新书上架:《Spring Boot 开发实战》基于 Kotlin + Gradle + Spring Boot 2.0 的企业级服务端开发实战

新书上架:《Spring Boot 开发实战》 — 基于 Kotlin + Gradle + Spring Boot 2.0 的企业级服务端开发实战 京东下单链接 https://item.jd.com/31178320122.html 天猫下单链接 https://detail...

程序员诗人
2018/08/22
0
0
【Spring Boot 开发实战】第1讲 Kotlin 的极简特性之:隐式类型与函数式编程

《Spring Boot 开发实战》—— 基于 Gradle + Kotlin 的企业级应用开发最佳实践 Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。...

程序员诗人
2018/04/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Linux iptables之mangle表使用案例

mangle表的用途 mangle表的主要功能是根据规则修改数据包的一些标志位,以便其他规则或程序可以利用这种标志对数据包进行过滤或策略路由。 mangel表使用示例 示例1-策略路由1 内网的客户机通...

月下狼
47分钟前
2
0
OSChina 周日乱弹 —— 兼职我想去学学布偶戏

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @clouddyy : 《火炎 - 女王蜂》 《火炎 - 女王蜂》 手机党少年们想听歌,请使劲儿戳(这里) @小鱼丁 :还在睡觉突然接到一个小哥哥电话“x...

小小编辑
59分钟前
61
5
租房软件隐私保护如同虚设

近日,苏州市民赵先生向江苏新闻广播新闻热线025-84658888反映,他在“安居客”手机应用软件上浏览二手房信息,并且使用该软件自动生成的虚拟号码向当地一家中介公司进行咨询。可电话刚挂不久...

linux-tao
今天
3
0
分布式项目(五)iot-pgsql

书接上回,在Mapping server中,我们已经把数据都整理好了,现在利用postgresql存储历史数据。 iot-pgsql 构建iot-pgsql模块,这里我们写数据库为了性能考虑不在使用mybatis,换成spring jd...

lelinked
今天
6
0
一文分析java基础面试题中易出错考点

前言 这篇文章主要针对的是笔试题中出现的通过查看代码执行结果选择正确答案题材。 正式进入题目内容: 1、(单选题)下面代码的输出结果是什么? public class Base { private Strin...

一看就喷亏的小猿
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部