【转】spring 装配Bean中构造参数的注入
转载自:http://www.bianceng.cn/Programming/Java/201307/37027.htm
spring 装配Bean中构造参数的注入
spring装配bean中还有一种Set注入的替代,那就是构造参数的注入。
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 装配Bean中构造参数的注入的更多相关文章
- Spring 装配Bean
Spring 装配Bean 装配解释: 创建应用对象之间协作关系的的行为通常称为装配(wiring),这也是依赖注入的本质 依赖注入是Spring的基础要素 一 : 使用spring装配Bean基础介 ...
- Spring装配Bean之XML装配bean
在Spring刚出现的时候,XML是描述配置的主要方式,在Spring的名义下,我们创建了无数行XML代码.在一定程度上,Spring成为了XML的同义词. 现在随着强大的自动化配置和Java代码的配 ...
- Spring 装配Bean入门级
装配解释: 创建应用对象之间协作关系的的行为通常称为装配(wiring),这也是依赖注入的本质 依赖注入是Spring的基础要素 一 : 使用spring装配Bean基础介绍 1 :声明Bean B ...
- Spring装配bean
Spring配置的可选方案 Spring提供了如下三种装配机制: (1)在XML中显式配置 (2)在Java中显式配置 (3)隐式的bean发现机制和自动装配 Spring有多种方式可以装配bean, ...
- Spring装配Bean的过程补充
对上一篇的<Spring装配Bean的过程>的过程说一下,不然真产生了误区. 误区在哪里呢?那就是spring bean的作用域问题. 说哈常用的两种作用域:默认是scope = sing ...
- Spring装配Bean的过程
首先说一个概念:“懒加载” 懒加载:就是我们在spring容器启动的是先不把所有的bean都加载到spring的容器中去,而是在当需要用的时候,才把这个对象实例化到容器中. spring配置文件中be ...
- 在Spring的bean中注入HttpServletRequest解密
我们可以在Spring的bean中轻松的注入HttpServletRequest,使用@Autowired HttpServletRequest request;就可以了. 但是,为什么我们可以直接这 ...
- spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象
相关 知识 >>> 相关 练习 >>> 实现要求: 在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXm ...
- Spring装配bean(在java中进行显式配置)
1.简单介绍 Spring提供了三种装配机制: 1.在XML中进行显式配置: 2.在java中进行显式配置: 3.隐式的bean发现机制和自动装配. 其中,1和3项在项目中经常使用,而在java中进行 ...
随机推荐
- 在 C/C++ 中使用 TensorFlow 预训练好的模型—— 直接调用 C++ 接口实现
现在的深度学习框架一般都是基于 Python 来实现,构建.训练.保存和调用模型都可以很容易地在 Python 下完成.但有时候,我们在实际应用这些模型的时候可能需要在其他编程语言下进行,本文将通过直 ...
- Regularization method for machine learning
Regularization method(正则化方法) Outline Overview of Regularization L0 regularization L1 regularization ...
- HDU 4441 Queue Sequence(优先队列+Treap树)(2012 Asia Tianjin Regional Contest)
Problem Description There's a queue obeying the first in first out rule. Each time you can either pu ...
- 修改maven远程仓库为阿里的maven仓库(复制)
maven之一:maven安装和eclipse集成 maven作为一个项目构建工具,在开发的过程中很受欢迎,可以帮助管理项目中的bao依赖问题,另外它的很多功能都极大的减少了开发的难度,下面来介绍ma ...
- 山科SDUST OJ Problem J :连分数
Problem J: 连分数 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 2723 Solved: 801[Submit][Status][Web B ...
- lintcode-99-重排链表
99-重排链表 给定一个单链表L: L0→L1→-→Ln-1→Ln, 重新排列后为:L0→Ln→L1→Ln-1→L2→Ln-2→- 必须在不改变节点值的情况下进行原地操作. 样例 给出链表 1-> ...
- ELK6.2.4集群
ELK6.2.4集群安装使用 https://www.cnblogs.com/frankdeng/p/9139035.html 一 简介 Elasticsearch是一个高度可扩展的开源全文搜索和分析 ...
- WebServer参数长度超出解决
当内容超过了4M会报错 System.Web.Services.Protocols.SoapException: 运行配置文件中指定的扩展时出现异常. ---> System.Web.HttpE ...
- [CF912A]Tricky Alchemy
题意:你有a个黄水晶和b个蓝水晶,要求要x个黄水晶球(2黄),y个绿水晶球(1黄1蓝),z个蓝水晶球(3蓝),问还要多少水晶题解:模拟 C++ Code: #include<cstdio> ...
- [洛谷P1361]小M的作物
题目大意:将作物种在A,B两地,对于每种作物,种A,B分别有不同的收益,对于一些特殊的作物集合,共同种到A,B集合分别有一些额外收益.求最大收益. 题解:最小割,S向i连容量为$a_i$的边,i向T连 ...