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

时间: 2024-10-10 03:55:15

Spring通过构造方法注入的四种方式的相关文章

Spring的依赖注入的2种方式(1天时间)

今天花了一天的时间才调试出来 private      接口   实现类的那个bean; 最后面的那个名字不能随便的写,必须是配置文件中,实现类的那个bean 就是后面的那个名字写错了,花了整整一天 必须有这句注解扫描才能扫描到注解 进行注解的配置,不需要get方法和set方法,小龙儿说xml文件配置才需要set方法 package com.baobaotao1; import org.springframework.context.ApplicationContext; import org.

Spring Ioc-依赖注入的几种方式

一 setter方法注入 配置文件如下: <bean id="helloAction" class="org.yoo.action.SpringSetterHelloAction"><!-- setter injection using the nested <ref/> element --><property name="helloservice"><ref bean="hell

spring学习一——基本搭建,属性注入的两种方式

今天用spring 3.2.5搭建了基本的环境,spring出的太快了,前段时间才3.2.5,今儿个一瞧已经上了4的版本了,稍后给出spring的jar下载地址,毕竟现在官网上找不到了啊. 废话少说了,spring 3.2.5已经将所有的依赖包都放在了dist的lib下面,并且都有doc包和源码包,很是方便.先导入所需的jar包:core,context,beans,expression 四个jar包,除此之外,还需导入commons-logging. 下一步,新建xml文件,建议名称为 app

SSH深度历险(八) 剖析SSH核心原理+Spring依赖注入的三种方式

在java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类中.依赖注入的另一种说法是"控制反转",通俗的理解是:平常我们new一个实例,这个实例的控制权是我们程序员,而控制反转是指new实例工作不由我们程序员来做而是交给spring容器来做. Spring依赖注入(

实现spring事务的四种方式

用一个银行账号转钱的案例来说明spring事务的实现.在转钱过程中,一个账号钱增加,另一个减少,那么当有异常产生时,就会出现钱转丢了的现象一个减少了,而另一个没有增加,这个时候就需要把这两个行为绑定到一起,要么同时发生,要么都不发生这就用到了事务,事务就是指在逻辑上的一组操作,这组操作要么全部成功,要么全部失败 实现spring事务的四种方式分别为:(1)编程式事务管理:需要手动编写代码,在实际开发中很少使用(2)声明式事务管理:(2.1)基于TransactionProxyFactoryBea

Spring注入值得2种方式:属性注入和构造注入

Spring是一个依赖注入(控制反转)的框架,那么依赖注入(标控制反转)表现在那些地方了? 即:一个类中的属性(其他对象)不再需要手动new或者通过工厂方法进行创建,而是Spring容器在属性被使用的时候给予注入. 注入有2种方式: 1. 属性注入:通过无参构造函数+setter方法注入 2. 构造注入:通过有参的构造函数注入. 优缺点: 1. 属性注入直白易懂,缺点是对于属性可选的时候,很多个构造函数会显得类很臃肿. 2. 构造注入是一种高内聚的体现,特别是针对有些属性需要在对象在创建时候赋值

Spring学习笔记二(Bean注入的几种方式)

1.前言 上一篇博客从宏观上讲解了一下Spring的知识,下面这篇来着重讲解一下有关Bean注入的几种方式. 2.Bean注入的几种方式 2.1 类构造器初始化 这也是默认的方式,在上一篇博客中也有所体现.直接在applicationContext.xml配置文件中,配置Bean标签即可 <span style="font-family:SimSun;font-size:18px;"><!-- 实例工厂初始化 --> <!-- 必须先创建实例工厂对应的Be

依赖注入的两种方式并附上例子

1.依赖注入:就是指程序在运行过程中,如果需要另外一个对象协助完成时,无需在代码中创建被调用者,而是依赖外部的注入获取. 2.依赖注入的两种方式: 设置注入:设置注入是通过setter方法注入被调用者的实例. 构造注入:利用构造方法来设置依赖注入的方式称为构造注入. 3.接下来附上例子来说明设置注入 (1).首先,附上设置注入的例子,新建一个Java项目,配置好Spring后,即可,项目结构图如下图所示: (2).首先,新建2个接口,一个Animal接口,一个Person接口,其中Animal接

IoC(控制反转)的主要组件和注入的两种方式

一.IoC的主要组件: (1).Spring框架的两个最基本和最重要的包是org.springframework.beans.factory(该包中的主要接口是BeanFactory)和org.springframework.context包(该包中的主要接口是ApplicationFactory).这两个包中的代码提供了Spring IoC特性的基础. (2).Spring IoC框架的主要组件有:Beans.配置文件(beans.xml或applicationContext.xml).Bea