Spring学习笔记二:注入方式
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6774608.html
我们说,IOC的实现方式是依赖注入,也就是把被依赖对象赋值到依赖对象的成员属性。怎么做到呢?有三种方式。
一:设值注入
设值,顾名思义就是:把被依赖值设置为成员变量的值。
假设类A定义如下:
class A{
private InterFace_B b;//面向接口编程
....
//生成b的setter和getter
public void setB()...
public InterFace_B getB()...
}
设值注入配置如下:
<bean id="Imp_B" class="com.ygj.B_Imp"></bean>//注册接口B的实现类:id,完整路径 <bean id="A" class="com.ygj.A">//注册类A:id,完整路径
<property name="b" ref="B"/>//设置依赖:name为成员对象在A中属性名,ref为被依赖的对象注册的id,这里把接口B的实现类Imp_B赋值进来
</bean>
Spring在创建类A对象时,就会同时创建类B对象,然后调用对象A的setB(B)方法把ref指向的对象传进去,赋值给成员b。所以叫设值注入。
二:构造注入
构造注入的方式就是:通过构造函数传参的方式进行成员对象的赋值。
假设类A定义如下:
class A{
private InterFace_B b;//面向接口编程
....
public A(...){..,InterFace_B b}//A的构造函数
}
构造注入的配置如下:
<bean id="Imp_B" class="com.ygj.B_Imp"></bean>//注册接口B的实现类:id,完整路径 <bean id="A" class="com.ygj.A">//注册类A:id,完整路径
<constructor-arg name="b" ref="B"/>//配置构造参数:name为成员对象在A中属性名,ref为被依赖的对象注册的id,这里把接口B的实现类Imp_B赋值进来
</bean>
两种注入的不同有两处:
1:bean标签中用的是property标签还是constructor-arg标签
2:设值注入要定义setter/getter方法,构造注入则要定义带参构造函数
三:自动装配(自动注入依赖)
用到自动装配的话,就不需在配置文件中书写众多属性标签、构造参数标签等。
前提是,bean类的定义要符合自动装配类型的规则,如:byName对应设值装配,所以bean类要定义好属性的setter和getter。constructor则定义好带参构造函数。
自动装配有两种粒度,分别为 全局默认自动装配、个别bean自定义装配。
1:全局默认自动装配
在beans根标签中配置default-aotuwire属性,则各个bean都按照这个模式进行自动装配。

2:个别bean自定义装配
在注册的bean标签设置autowire属性。

3:自动装配的模式

设置了自动装配,则配置bean时,就可以省略依赖对象的属性配置了。
Spring学习笔记二:注入方式的更多相关文章
- spring学习笔记二 注解及AOP
本节需要导入spring-aop包 注解 使用注解的目的是为了代替配置,在使用注解时,省略键时,则是为value赋值. 扫描某个包下的所有类中的注解 <?xml version="1. ...
- Spring 学习笔记 ----依赖注入
依赖注入 有三种方式,本文只学习下属性注入. 属性注入 属性注入即通过 setXxx方法()注入Bean的属性值或依赖对象,由于属性注入方式具有可选择性和灵活性高的优点,因此属性注入方式是 ...
- Spring学习笔记--依赖注入
依赖注入和控制反转:http://baitai.iteye.com/blog/792980出自李刚<轻量级 Java EE 企业应用实战> Java应用是一种典型的依赖型应用,它就是由一些 ...
- spring学习笔记二:spring使用构造方法注入(set方式注入)
项目目录树: 1.spring的依赖包配置 * SPRING_HOME/dist/spring.jar * SPRING_HOME/lib/log4j/log4j-1.2.14.jar * SPRIN ...
- Spring学习笔记(二)之装配Bean
一,介绍Bean的装配机制 在Spring中,容器负责对象的创建并通过DI来协调对象之间的关系.但是我们要告诉Spring创建哪些Bean并且如何将其装配在一起.,装配wiring就是DI依赖注入的本 ...
- Spring学习总结(1)-注入方式
Spring实现IOC的思路是提供一些配置信息用来描述类之间的依赖关系,然后由容器去解析这些配置信息,继而维护好对象之间的依赖关系,前提是对象之间的依赖关系必须在类中定义好,比如A.class中有一个 ...
- Spring 学习笔记(二)
spring 核心 (xml方式.注解方式) 两种方式实现 ioc :控制反转 aop : 面向切面
- Spring学习笔记(二)
1.Spring MVC 返回json数据 <bean class="org.springframework.web.servlet.mvc.annotation.Annotation ...
- Spring学习笔记6——注解方式测试
需要下载junit-4.12.jar和hamcrest-all-1.3.jar,将下载好的包导入到项目当中. 修改TestSpring, 并运行1. @RunWith(SpringJUnit4Clas ...
随机推荐
- Linux下创建可执行bin安装文件
需求及应用场景 1.简化操作.一般的软件安装过程,如果想要精简步骤,我们一般会将需要在命令行中输入的命令写成一个脚本,同时将安装介质准备好.我们将脚本和安装介质上传到生产环境,然后通过执行脚本来完成安 ...
- Svg.Js 父类的基础操作
一.SVG.Doc 创建SVG文档 var draw = SVG('drawing') <div id="svg1"></div> <script&g ...
- 在SqlServer 中解析JSON数据 [parseJSON] 函数 数据库中 解析JSON
使用如下: SELECT * FROM parseJSON('{ "联系人": { "姓名": "huang", "网名" ...
- go语言之进阶篇单向channel特点
1.单向channel特点 package main //"fmt" func main() { //创建一个channel, 双向的 ch := make(chan int) / ...
- window.open 浏览器差异.
首先引入 w3help的,莫的测试: 原帖地址:http://www.w3help.org/zh-cn/causes/BX1053 w3help的测试,和我的测试相互补充,应该比较完整了.悲剧的是 ...
- C/C++二叉树搜索树操作集
啥是二叉查找树 在数据结构中,有一个奇葩的东西,说它奇葩,那是因为它重要,这就是树.而在树中,二叉树又是当中的贵族.二叉树的一个重要应用是它们在查找中的应用,于是就有了二叉查找树. 使二叉树成为一颗二 ...
- 搭建MySQL高可用负载均衡集群(转)
阅读目录 1.简介 2.基本环境 3.配置MySQL主主复制 4.中间件简述 4.1.Haproxy介绍 4.2.keepalived介绍 5.中间件的安装与配置(haproxy.keepalived ...
- [VS2010搭建汇编开发环境win32和x64]
场景: 1. 虽然使用MASM32也可以编译运行汇编程序,但是既然装了VS2010,它也能支持编译运行汇编吧.不然微软的开发人员难道还不用vs写汇编程序了? http://www.masm32.com ...
- 已知(x,y,z,yaw,pitch,roll)如何得到4*4的转换矩阵?
作者:Nicholas链接:https://www.zhihu.com/question/41514206/answer/104827395来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商 ...
- LigerUi之Grid使用详解(二)——数据编辑
一.问题概述 在开发web信息管理系统时,使用Web前端框架可以帮助我们快速搭建一组风格统一的界面效果,而且能够解决大多数浏览器兼容问题,提升开发效率.所以上一篇文章为大家介绍了LigerGrid的显 ...