spring自己主动装配Bean属性
spring提供了3种类型的自己主动装配
- byName:把与Bean的属性具有同样名字(或者ID)的其它Bean自己主动装配到Bean的相应属性中。
- byType:把与Bean的属性具有同样类型的其它Bean自己主动装配到Bean的相应属性中。
- constructor:把与Bean的构造器入參具有同样类型的其它Bean自己主动装配到Bean的相应属性中。
byName自己主动装配
<bean id="roles" class="cn.com.ztz.spring.model.Roles" autowire="byName">
<property name="id" value="1"/>
<property name="roleName" value="管理员"/>
<!-- 能够不须要用ref去关联bean了 -->
<!-- <property name="users" ref="users"/> -->
</bean>
<bean id="users" class="cn.com.ztz.spring.model.Users">
<property name="id" value="2"/>
<property name="name" value="张三"/>
</bean>
byName自己主动装配遵循一项约定:为属性自己主动装配ID与该属性名字同样的Bean。通过设置autowire="byName"来自己主动装配。
byType自己主动装配
<bean id="roles" class="cn.com.ztz.spring.model.Roles" autowire="byType">
<property name="id" value="1"/>
<property name="roleName" value="管理员"/>
<!-- 能够不须要用ref去关联bean了 -->
<!-- <property name="users" ref="users"/> -->
</bean>
<!-- 删除掉Bean的id,也能够正确装配 -->
<bean class="cn.com.ztz.spring.model.Users">
<property name="id" value="2"/>
<property name="name" value="张三"/>
</bean>
byType自己主动装配存在一个局限性:假设Spring寻找到多个Bean。他们的类型与须要自己主动装配的属性类型都相匹配,怎么办?Spring提供另外两种选择,能够为自己主动装配标识一个首选Bean。或者取消某个Bean自己主动装配的候选资格。
我们能够把别的Bean的primary设置false来达到效果。
constructor自己主动装配
<bean id="roles" class="cn.com.ztz.spring.model.Roles" autowire="constructor">
<constructor-arg name="id" value="1"/>
<constructor-arg name="roleName" value="管理员"/>
<!-- 能够不须要用ref去关联bean了 -->
<!-- <constructor-arg name="users" ref="users"/> -->
</bean>
<!-- 删除掉Bean的id,也能够正确装配 -->
<bean class="cn.com.ztz.spring.model.Users">
<constructor-arg name="id" value="2"/>
<constructor-arg name="name" value="张三"/>
</bean>
constructor自己主动装配跟byType自己主动装配有同样的局限性。
当发现多个Bean匹配某个构造器的入參,Spring也不会去尝试哪个构造器更适合使用。
默认自己主动装配
spring自己主动装配Bean属性的更多相关文章
- spring实战一:装配bean之注入Bean属性
内容参考自spring in action一书. 创建应用对象之间协作关系的行为通常称为装配,这也是依赖注入的本质. 1. 创建spring配置 spring是一个基于容器的框架.如果没有配置spri ...
- Spring入门(5)-自动装配Bean属性
Spring入门(5)-自动装配Bean属性 本文介绍如何装配Bean属性. 0. 目录 ByName ByType constructor 默认自动装配 混合使用自动装配和显示装配 1. ByNam ...
- Spring总结 1.装配bean
本随笔内容要点如下: 依赖注入 Spring装配bean的方式 条件化装配 一.依赖注入 我理解的依赖注入是这样的:所谓的依赖,就是对象所依赖的其他对象.Spring提供了一个bean容器,它负责创建 ...
- Spring 之自动化装配 bean 尝试
[Spring之自动化装配bean尝试] 1.添加dependencies如下所示(不是每一个都用得到 <dependencies> <dependency> <grou ...
- spring的自动装配Bean与自动检测Bean
spring可以通过编写XML来配置Bean,也可以通过使用spring的注解来装配Bean. 1.自动装配与自动检测: 自动装配:让spring自动识别如何装配bean的依赖关系,减少对<pr ...
- spring中自动装配bean
首先用@Component注解类: package soundsystem: import org.springframework.stereotype.Component; @Component p ...
- Spring学习笔记—装配Bean
在Spring中,对象无需自己负责查找或创建与其关联的其他对象.相反,容器负责把需要相互协作的对象引用赋予各个对象.创建应用对象之间协作关系的行为通常称为装配(wiring),这也是依赖注入的本质. ...
- spring实战三装配bean之Bean的作用域以及初始化和销毁Bean
1.Bean的作用域 所有的spring bean默认都是单例.当容器分配一个Bean时,不论是通过装配还是调用容器的getBean()方法,它总是返回Bean的同一个实例.有时候需要每次请求时都获得 ...
- Spring框架---IOC装配Bean
IOC装配Bean (1)Spring框架Bean实例化的方式提供了三种方式实例化Bean 构造方法实例化(默认无参数,用的最多) 静态工厂实例化 实例工厂实例化 下面先写这三种方法的applicat ...
随机推荐
- 如何使用Jenkins进行持续集成测试
如何使用Jenkins进行持续集成测试: 安装Java环境: 安装Jenkins:两种方式,直接运行文件:使用tomcat运行: 创建一个job,构建的时候选择 execute Windows bat ...
- ASP.NET Core 2.2 基础知识(十六) SignalR 概述
我一直觉得学习的最好方法就是先让程序能够正常运行,才去学习他的原理,剖析他的细节. 就好像这个图: 所以,我们先跟着官方文档,创建一个 SignalR 应用: https://docs.microso ...
- oracle 替换其中部分内容
update TABLE_NAME set field =REPLACE(field ,substr(field ,0,1) ,'P') where field is not null ;
- 【bzoj1486】【[HNOI2009]梦幻布丁】启发式链表合并(详解)
(画师当然是武内崇啦) Description N个布丁摆成一行,进行M次操作.每次将某个颜色的布丁全部变成另一种颜色的,然后再询问当前一共有多少段颜色.例如颜色分别为1,2,2,1的四个布丁一共有3 ...
- Java多线程——AQS框架源码阅读
AQS,全称AbstractQueuedSynchronizer,是Concurrent包锁的核心,没有AQS就没有Java的Concurrent包.它到底是个什么,我们来看看源码的第一段注解是怎么说 ...
- Problem W: 零起点学算法21——求平均值
#include<stdio.h> int main() { int a,b,c; scanf("%d %d %d",&a,&b,&c); pr ...
- yum出现的“UnicodeDecodeError: 'ascii' codec”问题解决
新装了CentOS 6.5系统,打算使用yum安装程序是出现了如下错误: Loading mirror speeds from cached hostfile Traceback (most rece ...
- Android studio百度地图demo出现230错误,key校验失败
转自daoxiaomianzi原文 Android studio 百度地图demo出现230错误,key校验失败 使用AndroidStudio导入Baidu地图的as版的demo,引入后,发现没有k ...
- CASJAVA一些理解
如果不用锁机制如何实现共享数据访问.(不要用锁,不要 用sychronized 块或者方法,也不要直接使用 jdk 提供的线程安全的数据结构,需要自己实现一个类来保证多个线程同时读写这个类中的共享 ...
- OpenGL ES 3.0之Fragment buffer objects(FBO)详解 (转)
http://www.cnblogs.com/salam/p/4957250.html 片段操作图 这篇文章将介绍从写入帧缓冲和读取帧缓冲的方式. Buffers(缓冲) OpenGL ES支持三种缓 ...