【转】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中进行 ...
随机推荐
- [Binary Search] Leetcode 35, 74
35. Search Insert Position Description Given a sorted array and a target value, return the index if ...
- ACM训练大纲
1. 算法总结及推荐题目 1.1 C++ STL • STL容器: set, map, vector, priority_queue, queue, stack, deque, bitset• STL ...
- 【PHP】- 全局变量global和$GLOBALS的区别
1.global global关键字的作用是定义全局变量,但是这个全局变量不是应用于整个网站,而是应用于当前页面,包括include或require的所有文件. 但是在函数体内定义的global变量, ...
- PHP蜘蛛爬虫开发文档
<我用爬虫一天时间“偷了”知乎一百万用户,只为证明PHP是世界上最好的语言 >所使用的程序框架 编写PHP网络爬虫, 需要具备以下技能: 爬虫采用PHP编写 从网页中抽取数据需要用XPat ...
- 项目常用解决方案之SystemSetting.xml文件的修改与读取
Winform及WPF项目中经常会用到类似SystemSetting.xml等类似的文件用于保存CLIENT的数据,比如登录过的用户名或密码以及其他设置.所以就想到一个解决方法,可以用到所有有此需求的 ...
- 域名/网站名/URL
http://mail.163.com/index.html 1)http://:协议,也就是HTTP超文本传输协议,网页在网上传输的协议. 2)mail:服务器名,代表着是一个邮箱服务器,所以是ma ...
- js & disabled mouse right button menus
js & disabled mouse right button menus 网页可以屏蔽 F12 https://www.cnblogs.com/Marydon20170307/p/9122 ...
- combobox下拉框
----------------------------------------------combobox下拉框----------------------------------------- f ...
- 【NOIP模拟赛】天神下凡 动态开点线段树
这些圆一定是在同一水平面上的,由于他们没有相交,因此我们发现他们每个人与外界关系可以分为,1.存在并圈圈 2.存在圈圈并被割,因此我们把所有的圆都加1,把被割的在加1,就可以啦,因此我们开一个线段树, ...
- HttpClient测试类请求端和服务端即可能出现乱码的解决
junit HttpClient 请求端 代码: package com.taotao.httpclient; import java.util.ArrayList; import java.util ...