Spring构造器的三种注入方式
构造器注入:通过构造方法注入就相当于给构造方法的参数传值,构造注入的优势是通过构造强制依赖关系,使得实例化出的bean对象一定是完整的或者可以使用的。
Salary类
public class Salary {private BigDecimal money;private int day;public Salary(){}public Salary(BigDecimal money, int day) {this.money = money;this.day = day;}@Overridepublic String toString() {return "Salary{money = " + money + ", day = " + day + "}";}
}
Employee类
public class Employee {private String name;private int age;private Salary salary;public Employee(){}public Employee(String canshu1, int canshu2, Salary canshu3) { //注意参数this.name = canshu1;this.age = canshu2;this.salary = canshu3;}@Overridepublic String toString() {return "Employee{name = " + name + ", age = " + age + ", salary = " + salary + "}";}
}
1. 根据参数类型传值
<bean name="salary" class="com.pojo.Salary"><constructor-arg type="int" value="20"/><constructor-arg type="java.math.BigDecimal" value="20000.0564"/></bean><bean name="employee" class="com.pojo.Employee"><constructor-arg type="java.lang.String" value="员工"/><constructor-arg type="int" value="25"/><constructor-arg type="com.pojo.Salary" ref="salary"/>
</bean>
type表示参数的类型:
对于引用类型的变量需要写全类型限定名,即 包名 + 类名。
对于基本数据类型直接写类型即可。
这种方式使用时最好是根据构造器的参数顺序写、当出现很多同类型的字段时,都容易出错。不推荐使用。
2. 根据参数列表的索引index传值
<bean name="salary" class="com.pojo.Salary"><constructor-arg index="1" value="20"/><constructor-arg index="0" value="15611.0564"/></bean><bean name="employee" class="com.pojo.Employee"><constructor-arg index="0" value="员工"/><constructor-arg index="1" value="25"/><constructor-arg index="2" ref="salary"/>
</bean>
index为构造器参数列表的索引
索引从0开始,到n - 1。
注入参数值的顺序可以颠倒,只要index没写错就行。
3. 通过参数名注入
<bean name="salary" class="com.pojo.Salary"><constructor-arg name="day" value="24"/><constructor-arg name="money" value="20000"/>
</bean><bean name="employee" class="com.pojo.Employee"><constructor-arg name="canshu1" value="员工"/><constructor-arg name="canshu2" value="25"/><constructor-arg name="canshu3" ref="salary"/>
</bean>
name为参数列表的参数名,不是字段名!
根据参数的名字传值,注意是参数名,不是字段名。
比较实用,一些编译器都会自动提示。
Spring构造器的三种注入方式相关推荐
- spring入门之Spring 常用的三种注入方式
Spring 常用的三种注入方式 Spring 通过 DI(依赖注入)实现 IOC(控制反转),常用的注入方式主要有三种:构造方法注入,set 方法注入,基于注解的注入. 一.通过构造方法注入 先简单 ...
- Spring bean的三种注入方式
Spring的一个重要原理就是IOC(Inverse Of Control),即控制反转.IOC就是一种将组件依赖关系的创建和管理置于程序外部的技术,在Spring中Bean组件的实例化和依赖关系的管 ...
- Spring常用的三种注入方式
Spring通过DI(依赖注入)实现IOC(控制反转),常用的注入方式主要有三种:构造方法注入,setter注入,基于注解的注入. 构造方法注入 先简单看一下测试项目的结构,用maven构建的,四个包 ...
- Spring的三种注入方式(为什么推荐构造器注入?)
Spring的三种注入方式 一.属性注入 @Resource和@Autowired的区别 为什么尽量使用 @Resource? 二.setter 注入 三.构造器注入 具体可以看看Spring官网 为 ...
- spring三种注入方式
设置Spring的作用域 或者使用枚举值设置 单例和多里使用场景 自动注入 @Primary 一个接口有多个实现被spring管理吗,在依赖注入式,spring会不知道注入哪个实现类就会抛出NoUni ...
- 扯一把 Spring 的三种注入方式,到底哪种注入方式最佳?
循环依赖这个问题,按理说我们在日常的程序设计中应该避免,其实这个本来也是能够避免的.不过由于总总原因,我们可能还是会遇到一些循环依赖的问题,特别是在面试的过程中,面试考察循环依赖,主要是想考察候选人对 ...
- Spring 的三种注入方式?
1. 实例的注入方式 首先来看看 Spring 中的实例该如何注入,总结起来,无非三种: 属性注入 set 方法注入 构造方法注入 我们分别来看下. 1.1 属性注入 属性注入是大家最为常见也是使用最 ...
- Spring 的三种注入方式,到底哪种注入方式最佳?
1. 实例的注入方式 首先来看看 Spring 中的实例该如何注入,总结起来,无非三种: 属性注入 set 方法注入 构造方法注入 我们分别来看下. 1.1 属性注入 属性注入是大家最为常见也是使用最 ...
- Spring 依赖注入的理解及三种注入方式
Spring 依赖注入概念和三种注入方式(理解及应用) 什么是注入 要了解Spring的三种注入方式首先前提是得先了解一下什么是注入,相信很多人对这个概念都是模糊不清的,网上的解释是这样的: 依赖注入 ...
最新文章
- mysql和Oracle数据库的一些异同。
- Scikit-learn 数据预处理之鲁棒缩放RobustScaler
- alexnet vgg_从零开始:建立著名的分类网2(AlexNet / VGG)
- mysql 日期滞后_如何滞后MySQL中的列?
- java游戏运行环境_Java运行环境
- 【软件测试】测试需求分析
- mtk 驱动开发(71)---Android getevent,sendevent,input keyevent
- 实用的 Python —— 进制(二进制形式中 1 的位数)
- C++ STL 容器元素排列之next_permutation和prev_permutation的使用示范
- sql递归查询上级_递归的实际业务场景之MySQL 递归查询
- CICD详解(十一)——sonar详解
- 脉宽调制功能(PWM)
- 柴静十年看见了什么——一个央视记者的心灵史
- 科技创新就要高浓度、高密度
- python将小数转化为二进制_Python实现的十进制小数与二进制小数相互转换功能
- sql转置两种实现方式记录
- excel 2种方法将长日期修改成短日期
- sipp介绍与脚本撰写(一)
- ASP.NET C#药店管理信息系统(含论文)毕业设计【演示视频】
- 三级网络技术_无线局域网设备安装与调试