Spring 3.x企业应用开发实战(9-1)----依赖注入
来源:互联网 发布:windows r2是什么意思 编辑:程序博客网 时间:2024/06/07 03:18
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企业应用开发实战书中:ant building spring3.x依赖包
- Spring 3.x 企业应用开发实战
- Spring 3.x企业应用开发实战
- Spring 3.x企业应用开发实战(4)----资源加载
- Spring 3.x企业应用开发实战(6)----BeanFactory
- Spring 3.x企业应用开发实战(7)----ApplicationContext
- Spring 3.x企业应用开发实战(8)----Bean装配
- Spring 3.x企业应用开发实战(10)----AOP切面
- Spring 3.x企业应用开发实战(14)----事务
- Spring 3.X 企业应用开发实战 -- 目录
- 《Spring.3.x企业应用开发实战》--- 零碎笔记
- Spring 3.x 企业应用开发实战pdf
- Spring 3.x企业应用开发实战(9)----AOP前置增强
- Spring 3.x 企业应用开发实战(含CD光盘1张)
- Spring 3.x企业实用开发实战
- Spring 3.x企业实用开发实战(1)
- Spring3.x企业应用开发实战-Spring+Hibernat架构分析
- HDU1385Minimum Transport Cost--Floyd
- asp.net发送电子邮件
- HDU--1005 -- Number Sequence [数论]
- 让edittext不自动获得焦点
- php基础系列:读《细说php》,php要点随记
- Spring 3.x企业应用开发实战(9-1)----依赖注入
- MFC调用exe
- 黑马程序员-JAVA面向对象之抽象、接口、多态
- Socket.close()和OutputStreamWriter.close()有什么区别么?
- 变量和函数的存储类别
- stl map的基本使用
- 解决实体类噩梦:联合实体类(Java反射+泛型实际应用)
- ZOJ第一题_1649Rescue(优先队列下的BFS)
- WMAppManifest.xml修改,图文超详细