Spring通过构造方法注入的四种方式
通过构造方法注入,就相当于给构造方法的参数传值
set注入的缺点是无法清晰表达哪些属性是必须的,哪些是可选
的,构造注入的优势是通过构造强制依赖关系,不可能实例化不
完全的或无法使用的bean。
MemberBean定义四个变量,
private String name;
private Double salary;
private Dept dept;
private String sex;
加上构造方法和toString方法:方便测试
Dept:
private String dname;
private String deptno;
使用set方法注入
第一种方法:根据索引赋值,索引都是以0开头的:
<bean
id="memberBean" class="www.csdn.spring01.constructor.MemberBean">
<constructor-arg index="0" value="刘晓刚" />
<constructor-arg index="1" value="3500" />
<constructor-arg index="2" ref="dept"/>
<constructor-arg index="3" value="男" />
第二种方法是根据所属类型传值
这种方法基本上不怎么适用,因为一个类里可以有好几个相同基本类型的变量,很容易就混淆值传给哪一个参数了所以做好不要使用这种方法:
<constructor-arg type="java.lang.String" value="刘晓刚"
<constructor-arg type="java.lang.Double" value="3500" />
<constructor-arg type="www.csdn.spring01.constructor.Dept" ref="dept"/>
<constructor-arg type="java.lang.String" value="男" />
第三种方法:根据参数的名字传值:(推荐用法)
在这几种方法里我感觉这种方法是最实用的,他是根据名字来传值的,所以基本上只要名字对了,这个值就可以获取到
<constructor-arg name="name" value="刘晓刚" />
<constructor-arg name="salary" value="3500" />
<constructor-arg name="dept" ref="dept"/>
<constructor-arg name="sex" value="男" />
第四种方法:直接传值
直接给参数赋值,这种方法也是根据顺序排的,所以一旦调换位置的话,就会出现bug,这种方法已经很原始了
<constructor-arg value="刘晓刚" />
<constructor-arg value="3500" />
<constructor-arg ref="dept"/>
<constructor-arg value="男" />
</bean>
<bean id="dept" class="www.csdn.spring01.constructor.Dept" >
<property name="dname" value="北航"/>
<property name="deptno" value="00001"/>
</bean>S
Spring通过构造方法注入的四种方式的更多相关文章
- Spring中依赖注入的四种方式
在Spring容器中为一个bean配置依赖注入有三种方式: · 使用属性的setter方法注入 这是最常用的方式: · 使用构造器注入: · 使用Filed注入(用于注解方式). 使用属性的sett ...
- spring的依赖注入的四种方式,数组与集合注入;引用注入;内部bean注入
三种注入方式 第一种: 基于构造函数 hi.java (bean) package test_one; public class hi { private String name; public hi ...
- Spring中属性注入的几种方式以及复杂属性的注入
在Spring框架中,属性的注入我们有多种方式,我们可以通过构造方法注入,可以通过set方法注入,也可以通过p名称空间注入,方式多种多样,对于复杂的数据类型比如对象.数组.List集合.map集合.P ...
- 六 Spring属性注入的四种方式:set方法、构造方法、P名称空间、SPEL表达式
Spring的属性注入: 构造方法的属性注入 set方法的属性注入
- Spring Ioc-依赖注入的几种方式
一 setter方法注入 配置文件如下: <bean id="helloAction" class="org.yoo.action.SpringSetterHell ...
- Spring中属性注入的几种方式以及复杂属性的注入详解
在spring框架中,属性的注入我们有多种方式,我们可以通过set方法注入,可以通过构造方法注入,也可以通过p名称空间注入,方式多种多样,对于复杂的数据类型比如对象.数组.List.Map.Prope ...
- Spring IOC 依赖注入的两种方式XML和注解
依赖注入的原理 依赖注入的方式---XML配置 依赖注入的方式---注解的方式 Spring 它的核心就是IOC和AOP.而IOC中实现Bean注入的实现方式之一就是DI(依赖注入). 一 DI的原理 ...
- Spring注解依赖注入的三种方式的优缺点以及优先选择
当我们在使用依赖注入的时候,通常有三种方式: 1.通过构造器来注入: 2.通过setter方法来注入: 3.通过filed变量来注入: 那么他们有什么区别吗?应该选择哪种方式更好? 三种方式的区别小结 ...
- 【websocket】spring boot 集成 websocket 的四种方式
集成 websocket 的四种方案 1. 原生注解 pom.xml <dependency> <groupId>org.springframework.boot</gr ...
随机推荐
- LeetCode之“树”:Validate Binary Search Tree
题目链接 题目要求: Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is ...
- Mybatis中文查询没有结果
我用中文参数去查找数据,没有返回结果,应该是乱码问题 进行如下配置问题消失:jdbc:mysql://localhost:3306/appstore_db?useUnicode=true&ch ...
- Linux文件系统的简单操作 - df, du, ln
现在我们知道磁盘的整体数据是在 superblock 区块中,但是每个各别文件的容量则在 inode 当中记载的. 那在文字接口底下该如何叫出这几个数据呢?底下就让我们来谈一谈这两个命令: df:列出 ...
- ListView 与ContextMenu的关联管理
<span style="font-family: Arial, Helvetica, sans-serif;">package com.example.listvie ...
- 测试驱动开发TDD(test drive development)
classpath,路径列表.告诉java需要加载类的存放位置, java会去搜寻.这种机制实现了动态加载. java -cp 加载类路径 执行类名 : 加载类路径可是绝对,也可以相对. 代码重构 ...
- 用C语言将一个数开根号后再取倒数的方法
在上学的时候,曾经看过有人写过这样的算法,就是将一个数开根号后再取倒数的算法,我本人也觉得十分巧妙,于是就将它积累了下来,让我们来看看是怎么回事: #include <stdio.h> # ...
- Glog 和 Log4cxx 的对比
转自:http://monkeycn.iteye.com/blog/1021703 #1 Log4cxx有比较完整的配置文档方式,xml和java配置档:GLog只能通过启动程序的时候的输入参数来配置 ...
- iOS9自动布局神器StackView
http://www.jianshu.com/p/767f72b7d754 这篇文章紧跟上边autolayout的一些小技巧,如果你没有看过,不防先看下<你真的会用autolayout吗?> ...
- CentOS7安装codeblocks(转载)
1.安装gcc,需要c和c++两部分,默认安装下,CentOS不安装编译器的,在终端输入以下命令即可 yum install gccyum install gcc-c++ 2.安装gtk2-devel ...
- td默认文字超出后显示..,点击tr时td文字显示完整
做项目时,产品提的需求,table表格里面,每一列限制文字超出宽度后显示省略号,等点击td时,文字显示完整,今天整理了一下代码,积累一下 备注:1.邮箱和网址,在td里面不会自动换行,需要增加word ...