转载自: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中构造参数的注入的更多相关文章

  1. Spring 装配Bean

    Spring 装配Bean 装配解释: 创建应用对象之间协作关系的的行为通常称为装配(wiring),这也是依赖注入的本质 依赖注入是Spring的基础要素 一 : 使用spring装配Bean基础介 ...

  2. Spring装配Bean之XML装配bean

    在Spring刚出现的时候,XML是描述配置的主要方式,在Spring的名义下,我们创建了无数行XML代码.在一定程度上,Spring成为了XML的同义词. 现在随着强大的自动化配置和Java代码的配 ...

  3. Spring 装配Bean入门级

    装配解释: 创建应用对象之间协作关系的的行为通常称为装配(wiring),这也是依赖注入的本质 依赖注入是Spring的基础要素 一 : 使用spring装配Bean基础介绍 1 :声明Bean  B ...

  4. Spring装配bean

    Spring配置的可选方案 Spring提供了如下三种装配机制: (1)在XML中显式配置 (2)在Java中显式配置 (3)隐式的bean发现机制和自动装配 Spring有多种方式可以装配bean, ...

  5. Spring装配Bean的过程补充

    对上一篇的<Spring装配Bean的过程>的过程说一下,不然真产生了误区. 误区在哪里呢?那就是spring bean的作用域问题. 说哈常用的两种作用域:默认是scope = sing ...

  6. Spring装配Bean的过程

    首先说一个概念:“懒加载” 懒加载:就是我们在spring容器启动的是先不把所有的bean都加载到spring的容器中去,而是在当需要用的时候,才把这个对象实例化到容器中. spring配置文件中be ...

  7. 在Spring的bean中注入HttpServletRequest解密

    我们可以在Spring的bean中轻松的注入HttpServletRequest,使用@Autowired HttpServletRequest request;就可以了. 但是,为什么我们可以直接这 ...

  8. spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象

    相关 知识 >>> 相关 练习 >>> 实现要求: 在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXm ...

  9. Spring装配bean(在java中进行显式配置)

    1.简单介绍 Spring提供了三种装配机制: 1.在XML中进行显式配置: 2.在java中进行显式配置: 3.隐式的bean发现机制和自动装配. 其中,1和3项在项目中经常使用,而在java中进行 ...

随机推荐

  1. Paper Reading - Show and Tell: Lessons learned from the 2015 MSCOCO Image Captioning Challenge

    Link of the Paper: https://arxiv.org/abs/1609.06647 A Correlative Paper: Show and Tell: A Neural Ima ...

  2. LeetCode - 70. Climbing Stairs(0ms)

    You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb ...

  3. SPOJ 375 Query on a tree(树链剖分)(QTREE)

    You are given a tree (an acyclic undirected connected graph) with N nodes, and edges numbered 1, 2, ...

  4. mac下使用clion构建boost库

    mac下使用clion构建boost库 使用brew install boost 完成后发现boost被安装在在/usr/local/Cellar/boost下 jetbrain给出的指导意见 htt ...

  5. 5for Java

    ① 从字符串“耿丹计算机Java20170320”中提取日期 public class Xx1 { /** * @param args */ public static void main(Strin ...

  6. [HAOI2007]理想的正方形 st表 || 单调队列

    ~~~题面~~~ 题解: 因为数据范围不大,而且题目要求的是正方形,所以这道题有2种解法. 1,st表. 这种解法暴力好写好理解,但是较慢.我们设st[i][j][k]表示以(i, j)为左端点,向下 ...

  7. SQL语言:结构化查询语言

    SQL语言:结构化查询语言 程序员或者DBA(数据库管理员)使用SQL和DBBSM进行交互,操纵数据库中的资源 分类: 1.DDL 数据定义语言 结构 create  创建   database ta ...

  8. BZOJ4550 小奇的博弈 【Nimk游戏 + dp + 组合数】

    题目 这个游戏是在一个1*n的棋盘上进行的,棋盘上有k个棋子,一半是黑色,一半是白色.最左边是白色棋子,最右边 是黑色棋子,相邻的棋子颜色不同. 小奇可以移动白色棋子,提比可以移动黑色的棋子,它们每次 ...

  9. arraylist和array的不同之处

    https://www.cnblogs.com/wangbin2188/p/6524200.html

  10. 使用记事本创建Web服务(WebService)

    学习就要从最简单最直观的地方入手. 1)打开记事本,添加如下代码: <%@ WebService Language="C#" Class="myFirstWebSe ...