Spring 3.x企业应用开发实战(9-1)----依赖注入
Spring中的依赖注入方式:属性注入、构造函数注入和工厂方式注入。
1、属性注入
属性注入即通过setXxx()方法注入Bean的属性值或依赖对象。
属性注入要求Bean提供一个默认的构造函数,在Java中,如果没有定义任何构造函数,则JVM会自动为其生成一个默认的构造函数。反之,如果类中显示定义了构造函数,则JVM不会为其生成默认的构造函数,如public BeanCar(String carName){},则需要同时提供一个默认的public BeanCar(){},否则使用属性注入时将会抛出异常。
<bean id="car" class="com.mrge.cp3.Car">
<property name="maxSpeed"><value>345</value></property>
<property name="color"><value>黑色</value></property>
<property name="brand"><value>红旗CA72</value></property>
</bean>
这里属性的配置,要求bean中必须要有setter方法,而不一定需要属性变量。
JavaBean关于属性名的特殊规范:
Spring配置文件中,JavaBean允许以大小写字母开头,但必须是前两个字符必须同时为大或同时为小,如ic、IC、ICcard、IDCard、ICCard都是合法的,iC、Iccard、iCCard、iDCard就是非法的。
2、构造函数注入:
使用构造函数注入的前提是Bean必须提供带参的构造函数。
#1、按类型匹配入参
public Car(String brand,int maxSpeed)
{
this.brand=brand;
this.maxSpeed=maxSpeed;
}
<bean id="car1" class="com.mrge.cp3.Car">
<constructor-arg type="java.lang.String">
<value>红旗CA72</value>
</constructor-arg>
<constructor-arg type="int">
<value>560</value>
</constructor-arg>
</bean>
#2、按索引匹配入参
public Car(String brand,String color,int maxSpeed)
{
this.brand=brand;
this.color=color;
this.maxSpeed=maxSpeed;
}
<bean id="car2" class="com.mrge.cp3.Car">
<constructor-arg index="0" value="红旗CA72"/>
<constructor-arg index="1" value="白色"/>
<constructor-arg index="2" value="201"/>
</bean>
这里索引是从0开始。
#3、两种方式联合入参
<bean id="car3" class="com.mrge.cp3.Car">
<constructor-arg index="1" type="java.lang.String">
<value>红旗CA72</value></constructor-arg>
<constructor-arg index="2" type="java.lang.String">
<value>白色</value></constructor-arg>
<constructor-arg index="3" type="java.lang.String">
<value>201</value></constructor-arg>
</bean>
#4、通过自身类型反射匹配入参
public Boss(String name,Car car,Office office)
{
this.name=name;
this.car=car;
this.office=office;
}
<bean id="boss" class="com.mrge.cp3.Boss">
<constructor-arg><value>Tom</value></constructor-arg>
<constructor-arg><ref bean="car"/></constructor-arg>
<constructor-arg><ref bean="office"/></constructor-arg>
</bean>
<bean id="car" class="com.mrge.cp3.Car">
<bean id="office" class="com.mrge.cp3.Office">
Spring 3.x企业应用开发实战(9-1)----依赖注入的更多相关文章
- Spring 3.x 实践 第一个例子(Spring 3.x 企业应用开发实战读书笔记第二章)
前言:工作之后一直在搞android,现在需要更多和后台的人员交涉,技术栈不一样,难免鸡同鸭讲,所以稍稍学习下. 这个例子取自于<Spring 3.x 企业应用开发实战>一书中的第二章,I ...
- 学习《Spring 3.x 企业应用开发实战》Day-1
Day-1 记录自己学习spring的笔记 提要:根据<Spring 3.x 企业应用开发实战>开头一个用户登录的例子,按照上面敲的. 1.项目分层
- Spring 3.x企业实用开发实战(1)
有关Spring的介绍这里就不赘述了,主要是学习了陈雄华版的<Spring 3.x企业应用开发实战>并做了一点笔记,以助于后期的回顾和复习. 废话不多说,直接进入主题,以下所有代码基于&l ...
- 《精通Spring 4.X企业应用开发实战》读书笔记1-1(IoC容器和Bean)
很长一段时间关注在Java Web开发的方向上,提及到Jave Web开发就绕不开Spring全家桶系列,使用面向百度,谷歌的编程方法能够完成大部分的工作.但是这种不系统的了解总觉得自己的知识有所欠缺 ...
- 《精通Spring+4.x++企业应用开发实战》读后感
引言 还记得大三时上培训班的是时候,当时的培训老师说自己是本地讲解spring最好的讲师,但是后来等我实习了看了<Spring 3.x 企业应用开发实战>以及后续版本<精通Sprin ...
- 《Spring 3.x 企业应用开发实战》目录
图书信息:陈雄华 林开雄 编著 ISBN 978-7-121-15213-9 概述: 第1章:对Spring框架进行宏观性的概述,力图使读者建立起对Spring整体性的认识. 第2章:通过一个简单的例 ...
- 《精通Spring 4.x 企业应用开发实战》学习笔记
第四章 IoC容器 4.1 IoC概述 IoC(Inverse of Control 控制反转),控制是指接口实现类的选择控制权,反转是指这种选择控制权从调用类转移到外部第三方类或容器的手中. 也就是 ...
- Spring 3.x 企业引用开发实战(陈雄华/林开雄)
目录 ... 第一章:Spring概述 IoC:BeanFactory.Context.El(SpringEL表达式) AOP:允许JVM虚拟机启动时使用代理类在运行时期修改指定类的字节码,改变一个类 ...
- Spring 3.x企业应用开发实战(14)----事务
Spring虽然提供了灵活方便的事务管理功能,但这些功能都是基于底层数据库本身的事务处理机制工作的.要深入了解Spring的事务管理和配置,有必要先对数据库事务的基础知识进行学习. 何为数据库事务 “ ...
随机推荐
- 从ActionFilterAttribute向view传送数据
[原文转载]http://www.cnblogs.com/QLeelulu/archive/2008/08/17/1269599.html 原文地址:ASP.NET MVC Tip #31 – Pas ...
- tomcat的webapp下的root文件夹的作用是什么
1.基本一样..只是表示不同的tomcat的http路径而已. root目录默认放的是tomcat自己的一个项目,如:http://localhost:8080/默认访问root项目 对于webapp ...
- Ubuntu系统中安装RPM格式包的方法
Ubuntu的软件包格式为deb,而RPM格式的包则是Red Hat 相关系统所用的软件包.当我们看到一个想用的软件包时,如果他是RPM格式,而你的操作系统是Ubuntu,那岂不是很遗憾?其实,在Ub ...
- angular调用WCF服务,读取文件夹下图片显示列表,下载另存为图片
读取文件夹下的文件 public string ReadImagesPaths() { string result = string.Empty; try { string path = System ...
- Xcode添加静态库以及编译选项配置常见问题
一,Xcode编译出现Link错误,出现"duplicate symbols for architecture i386 clang"提示.问题:链接时,项目有重名文件.解决:根据 ...
- 【POJ1823】【线段树】Hotel
Description The "Informatics" hotel is one of the most luxurious hotels from Galaciuc. A l ...
- functools学习有感
functools的内容不多,包含四个函数(partial,reduce,update_wrapper,wraps)和一个python对象(partial Objects). functools的四个 ...
- phpcms get标签说明
{pc:get sql="SELECT * FROM phpcms_member" cache="3600" page="$page" db ...
- 小A项目为什么加班
1.负责架构搭建的人搭建完成架构后,没有进行落地性验证:导致真正要用到的时候才发现spring没有配置:需要对架构人员的进度和内容进行跟踪,在跟踪进度的时候需要强调落地性: 2.负责架构搭建的人没有提 ...
- STM32自带的bool型变量
这些标着位会让你的程序使用起来更方便. First you need to include "STM32f10x_type.h" /*布尔型变量*/typedef enum{FAL ...