最小化spring XML配置,Spring提供了4种自动装配策略。
1.ByName自动装配:匹配属性的名字
在配置文件中的写法:
<bean name="course" class="course类的全包名"></bean>
<bean name="student" class="student类的全包名" autowire="byName"></bean>
注:spring会发现course属性可以通过setter注入来进行自动装配。
在ByName中注入可以省略一下的设置:<property name="stuName" value="张三"></property>
2.byType自动装配:是检查属性的类型
<bean name="course2" class="类的全包名" primary="true"></bean>
<bean name="course3" class="类的全包名" primary="false" autowire-candidate=false></bean>
<bean name="student" class="类的全包名" autowire="byType"></bean>
注:spring会发现course属性可以通过setter注入来进行自动装配。
autowire="byType":设置byType自动装配
primary="true":在多个类型的bean中,以有此设置的为主。
autowire-candidate=false:在多个类型的bean中,以有此设置排除某些Bean
3.constructor自动装配
<bean name="course" class="course类的全包名"></bean>
<bean name="student" class="student类的全包名" autowire="constructor"></bean>
注:spring会发现course属性可以通过构造函数注入来进行自动装配。
4.默认自动装配:
在命名空间(就是最上面的xml里面)中对注入进行定义,则这个配置文件默认都会采用这个方式进行装配
5.混合使用自动装配和显示装配
对某个Bean选择了自动装配策略,并不代表不能对该Bean的其他属性进行显示装配。
例如:
<bean id="" class="" autowire="byType">
<property name="" ref="" />
</bean>
即采用了ByName也采用了ByType
6.使用注解装配:@Autowired(重点)
默认情况下,@Autowired具有强契约特征,其所标注的属性或参数必须是可装配的。如果没有Bean可以装配到@Autowired所标注的属性或参数中,自动装配就会失败并会抛出NullPointException异常。
属性不一定非要装配,null值也是可以接受的。可以通过设置@Autowired的required属性为false来配置自动装配是可选的。
@Autowired(required=false)
private Object obj;
注意:required属性可以用于@Autowired注解所使用的任何地方。但是当使用构造器装配时,只有一个构造器可以将@Autowired的required属性设置为true。其他使用@Autowired注解所标注的构造器只能将required属性设置为false。
- 限定歧义性的依赖
另一方面,问题或许在于spring并不缺少适合自动装配的Bean。可能会有足够多的Bean都完全满足装配条件,并且都可以被装配到属性或参数中。
为了帮助@Autowired鉴别出哪一个Bean才是我们所需要的,可以配合使用spring的@qualifier注解。
例如:为了确保spring为Bean选择吉他(guitar)来演奏,即使有其他Bean也可以装配到instrument属性中,但可以使用@qualifier来明确指定名为guitar的Bean。
@Autowired
@qualifier("quitar")
private Instrument instrument;
@qualifier注解将尝试注入ID为guitar的Bean。
最小化spring XML配置,Spring提供了4种自动装配策略。的更多相关文章
- [Spring]04_最小化Spring XML配置
4.1 自动装配 Bean Spring 装配 bean 时,有时非常明确,就是需要将某个 bean 的引用装配给指定属性. 例如,若应用上下文中只有一个 javax.sql.DataSource 类 ...
- 2015年12月10日 spring初级知识讲解(二)最小化Spring XML配置 注解
序,随着Spring容器管理Bean数量增加,XML文件会越来越大,而且纯手工配置XML很繁琐,Spring和JAVA都提供了一些注解方式用以简化XML配置. 目录 一.自动装配(autowiring ...
- 最小化Spring XML配置
Spring提供两种技巧,可以帮助我们减少XML的配置数量. 1.自动装配(autowiring)有助于减少甚至消除配置<property>元素和<constructor-arg&g ...
- 三、最小化的Spring XML配置
Spring 提供了自动装配(自动识别如何装配Bean的依赖关系)和自动检测(检测哪些类需要被配置成Spring Bean) 1.自动装配Bean的属性 1.1四种类型得自动装配:byName.byT ...
- Spring学习笔记—最小化Spring XML配置
自动装配(autowiring)有助于减少甚至消除配置<property>元素和<constructor-arg>元素,让Spring自动识别如何装配Bean的依赖关系. 自动 ...
- 基于XML配置Spring的自动装配
一.了解Spring自动装配的方式 采用传统的XML方式配置Bean组件的关键代码如下所示 <bean id="userMapper" class="edu.cn. ...
- spring boot系列(五)spring boot 配置spring data jpa (查询方法)
接着上面spring boot系列(四)spring boot 配置spring data jpa 保存修改方法继续做查询的测试: 1 创建UserInfo实体类,代码和https://www.cnb ...
- spring xml配置标签详解
<!-- 指定类的名称 在对bean进行定义时,除了使用id属性来指定名称之外,为了提供多个名称,可以使用alias标签来指定. --> <alias name="&quo ...
- XML配置spring session jdbc实现session共享
概述 session的基础知识就不再多说. 通常,我们会把一个项目部署到多个tomcat上,通过nginx进行负载均衡,提高系统的并发性.此时,就会存在一个问题.假如用户第一次访问tomcat1,并登 ...
随机推荐
- [linux]为阿里云ECS(CentOS7)配置IPv6地址
环境为:ECS"经典网络"类型 步骤: 1. 编辑 /etc/sysctl.conf 文件,将其中三条禁用IPv6的设置更改为: net.ipv6.conf.all.disable ...
- Chapter 5 Blood Type——1
The rest of the morning passed in a blur. 早上剩下的时间都在模糊中度过了. It was difficult to believe that I hadn't ...
- leetcode — merge-sorted-array
import java.util.Arrays; /** * Source : https://oj.leetcode.com/problems/merge-sorted-array/ * * * G ...
- SmartSql = Dapper + MyBatis + Cache(Memory | Redis) + ZooKeeper + R/W Splitting + ......
SmartSql Why 拥抱 跨平台 DotNet Core,是时候了. 高性能.高生产力,超轻量级的ORM.156kb (Dapper:168kb) So SmartSql TargetFrame ...
- [ Java面试题 ]框架篇二
1.Hibernate工作原理及为什么要使用Hibernate? 工作原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Session 4.创建事务Tr ...
- 痞子衡嵌入式:ARM Cortex-M文件那些事(3)- 工程文件(.ewp)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家讲的是嵌入式开发里的project文件. 前面两节课里,痞子衡分别给大家介绍了嵌入式开发中的两种典型input文件:源文件(.c/.h/.s). ...
- IO帮助类
using System; using System.IO; using System.Web; using System.Drawing; using System.Drawing.Imaging; ...
- php 使用Glob() 查找文件技巧
定义和用法 glob() 函数返回匹配指定模式的文件名或目录. 该函数返回一个包含有匹配文件 / 目录的数组.如果出错返回 false. 参数 描述 file 必需.规定检索模式. size 可选.规 ...
- 在Jenkins管道中添加Webhook
你有没有尝试过在Jenkins中添加GitHub webhook?在这篇博客中,我将演示在您的管道中添加webhook的最简单方法. 首先,什么是webhook?webhook的概念很简单.webho ...
- 无依赖简单易用的Dynamics 365公共视图克隆工具
本人微信公众号:微软动态CRM专家罗勇 ,回复279或者20180818可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . Dy ...