spring入门(7)---装配Bean中构造参数的注入
2013-04-25 17:15
417 查看
在spring装配bean中还有一种Set注入的替代,那就是构造参数的注入。
set注入是一种直接方式,缺点是它假设了所 有的可变属性都可以通过set方法访问到。例如有些属性在创建时设置一次,以后不再改变。替代方式是通过构造函数设置一些属性值。还有它无法清晰表达哪些属性是必须的,哪些是可选的,构造注入的优势是通过构造强制依赖关系,不可能实例化不完全的或无法使用的bean。下面是构造器的几种注入方式:
1.通过构造函数注入 (原始方式)
2.根据构造器参数的类型
3.根据索引index注入
4.根据参数名称注入
EmployeeBean.java
Dept.java
spring-constructor.java
set注入是一种直接方式,缺点是它假设了所 有的可变属性都可以通过set方法访问到。例如有些属性在创建时设置一次,以后不再改变。替代方式是通过构造函数设置一些属性值。还有它无法清晰表达哪些属性是必须的,哪些是可选的,构造注入的优势是通过构造强制依赖关系,不可能实例化不完全的或无法使用的bean。下面是构造器的几种注入方式:
1.通过构造函数注入 (原始方式)
2.根据构造器参数的类型
3.根据索引index注入
4.根据参数名称注入
EmployeeBean.java
package www.csdn.spring.constructor.bean; public class EmployeeBean { private String name; private Double salary; private Dept dept; private String sex; // 构造器函数 public EmployeeBean(String name, Double salary, Dept dept, String sex) { super(); this.name = name; this.salary = salary; this.dept = dept; this.sex = sex; } @Override public String toString() { return "EmployeeBean [name=" + name + ", salary=" + salary + ", dept=" + dept + ", sex=" + sex + "]"; } }
Dept.java
package www.csdn.spring.constructor.bean; public class Dept { private String name; private String deptno; public void setName(String name) { this.name = name; } public void setDeptno(String deptno) { this.deptno = deptno; } @Override public String toString() { return "Dept [name=" + name + ", deptno=" + deptno + "]"; } }
spring-constructor.java
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- private String name; private Double salary; private Dept dept; --> <!-- 0、通过构造函数注入 (原始方式)--> <!-- <bean id="employeeBean" class="www.csdn.spring.constructor.bean.EmployeeBean"> <constructor-arg value="王晓而" /> <constructor-arg value="100.0" /> <constructor-arg ref="dept" /> <constructor-arg value="男" /> </bean> --> <!-- 下面三种解决1存在的问题 --> <!-- 1、根据构造器参数的类型 --> <bean id="employeeBean" class="www.csdn.spring.constructor.bean.EmployeeBean"> <constructor-arg type="java.lang.String" value="陈红均" /> <constructor-arg type="java.lang.String" value="男" /> <constructor-arg type="java.lang.Double" value="100.0" /> <constructor-arg type="www.csdn.spring.constructor.bean.Dept" ref="dept" /> </bean> <!-- 2、根据索引index注入 --> <!-- <bean id="employeeBean" class="www.csdn.spring.constructor.bean.EmployeeBean"> <constructor-arg index="0" value="陈红均" /> <constructor-arg index="1" value="100.0" /> <constructor-arg index="2" ref="dept" /> <constructor-arg index="3" value="女" /> </bean> --> <!-- 3、根据参数名称注入 --> <!-- <bean id="employeeBean" class="www.csdn.spring.constructor.bean.EmployeeBean"> <constructor-arg name="name" value="陈红均" /> <constructor-arg name="salary" value="100.0" /> <constructor-arg name="dept" ref="dept" /> <constructor-arg name="sex" value="男" /> </bean>--> <bean id="dept" class="www.csdn.spring.constructor.bean.Dept"> <property name="name" value="CSDN教育事业部" /> <property name="deptno" value="0x0001" /> </bean> </beans>
相关文章推荐
- 注入参数spring入门(7)---装配Bean中构造参数的注入
- 【转】spring 装配Bean中构造参数的注入
- 【JavaWeb-23】spring、IoC控制反转和DI依赖注入入门、基于XML的Bean装配、基于注解的Bean装配
- Spring Bean 注入 1 - 构造方法注入,属性注入,自动装配
- Spring 装配Bean的构造注入
- spring、IoC控制反转和DI依赖注入入门、基于XML的Bean装配、基于注解的Bean装配
- Spring装配bean,依赖注入及注入参数
- 框架 day36 Spring3 入门,DI依赖注入,装配bean基于xml/注解, 整合Junit4,配置约束自动提示
- Spring4 实战笔记(1):装配bean—依赖注入的本质
- Spring入门——Bean装配之Autowired注解
- spring4笔记----使用装配注入合作者Bean的三种方式
- Spring XML设置bean的构造参数和属性方法
- Spring入门学习——用@Autowired和@Resource自动装配Bean
- 自动装配bean【Spring 入门】
- Spring 构造注入 传参数
- Spring入门(5)-自动装配Bean属性
- 通过Java代码装配bean【Spring 入门】
- Spring属性注入、构造方法注入、工厂注入以及注入参数(转)
- Quartz入门实例14-让Quartz的Job使用Spring注入的Bean
- Spring Bean装配--@Bean注解注入说明