1、使用构造子注入时,则使用constructor-arg子标签,来指定构造函数的参数。   

<bean id="provider" class="com.apress.prospring.ch4.ConfigurableMessageProvider">

<constructor-arg>

<value>This is a configurable message</value>

</constructor-arg>

</bean>

2、当构造函数有多个参数时,可以使用constructor-arg标签的index属性,index属性的值从0开始。   

<bean id="provider" class="com.apress.prospring.ch4.ConfigurableMessageProvider">

<constructor-arg index="0">

<value>first parameter</value>

</constructor-arg>

<constructor-arg index="1">

<value>second parameter</value>

</constructor-arg>

</bean>

3、 在使用构造子注入时,需要注意的问题是要避免构造子冲突的情况发生。考虑下面的情况:   

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class ConstructorConfusion {  
 
public ConstructorConfusion(String someValue) {  
 
        System.out.println("ConstructorConfusion(String) called");  
 
    }  
 
public ConstructorConfusion(int someValue) {  
 
        System.out.println("ConstructorConfusion(int) called");  
 
    }  
 
}  

使用如下配置文件

<bean id="constructorConfusion" class="com.apress.prospring.ch4.ConstructorConfusion">

<constructor-arg>

<value>90</value>

</constructor-arg>

</bean>

那 么,当实例化组件constructorConfusion时,将输出ConstructorConfusion(String) called,也就是 说参数类型为String的构造函数被调用了,这显然不符合我们的要求。为了让Spring调用参数为int的构造函数来实例化组件 constructorConfusion,我们需要在配置文件中明确的告诉Spring,需要使用哪个构造函数,这需要使用constructor- arg的type属性。

<bean id="constructorConfusion" class="com.apress.prospring.ch4.ConstructorConfusion">

<constructor-arg type="int">

<value>90</value>

</constructor-arg>

</bean>

spring - constructor-arg的常规用法的更多相关文章

  1. GridView的常规用法

    GridView控件在Asp.net中相当常用,以下是控件的解释,有些是常用的,有些是偶尔用到的,查找.使用.记录,仅此而已.(最后附带DropDownList控件) ASP.NET中GridView ...

  2. mapreduce的cleanUp和setUp的特殊用法(TopN问题)和常规用法

    一:特殊用法 我们上来不讲普通用法,普通用法放到最后.我们来谈一谈特殊用法,了解这一用法,让你的mapreduce编程能力提高一个档次,毫不夸张!!!扯淡了,让我们进入正题: 我们知道reduce和m ...

  3. Spring AOP 中@Pointcut的用法

    Spring Aop中@pointCut的用法,格式:execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? nam ...

  4. 【python】-matplotlib.pylab常规用法

    目的: 了解matplotlib.pylab常规用法 示例 import matplotlib.pylab as pl x = range(10) y = [i * i for i in x] pl. ...

  5. spring 中配置sessionFactory及用法

    spring 中配置sessionFactory及用法 方法一: 1.在Spring的applicationContext.xml中配置bean <!-- 启用注解注入  -->      ...

  6. Spring中JdbcTemplate的基础用法

    Spring中JdbcTemplate的基础用法 1.在DAO中使用JdbcTemplate 一般都是在DAO类中使用JdbcTimplate,在XML配置文件中配置好后,可以在DAO中注入即可. 在 ...

  7. MarkDown的常规用法

    MarkDown的常规用法 标题 # 一级标题 ## 二级标题 ... ###### 六级标题 列表 第二级 - 和 空格 + 和 空额 * 和 空格 第三级 代码块 多行代码块 3个` 回车 单行代 ...

  8. 全面解析Spring中@ModelAttribute注解的用法

    本文不再更新,可能存在内容过时的情况,实时更新请移步我的新博客:全面解析Spring中@ModelAttribute注解的用法: @ModelAttribute注解用于将方法的参数或方法的返回值绑定到 ...

  9. 关于Spring定时任务(定时器)用法

    Spring定时任务的几种实现 Spring定时任务的几种实现 一.分类 从实现的技术上来分类,目前主要有三种技术(或者说有三种产品): 从作业类的继承方式来讲,可以分为两类: 从任务调度的触发时机来 ...

随机推荐

  1. 封装原生JavaScript的ajax

    function obj2str(data) { data = data || {}; // 如果没有传参, 为了添加随机因子,必须自己创建一个对象 data.t = new Date().getTi ...

  2. 常见Idea插件

    一.Maven Helper Maven Helper用来查找和排除Jar包冲突的依赖关系. 安装: 打开Idea的Settings→Plugins→在输入框中输入“maven helper”→点击I ...

  3. ECMAScript 5 新增的Array方法

    引自:by zhangxinxu from http://www.zhangxinxu.com ES5中新增了写数组方法,如下: forEach (js v1.6) map (js v1.6) fil ...

  4. 在VS中编译Opencascade6.6.0

    话说,OpenCASCADE团队真的很给力,版本更新速度也是嗖嗖地.依稀记得上次编译OCC,那时候的第三方库.OCC本身几何引擎库,全都得自己编译. 于是,编译过程之艰苦也就可想而知了.最近重换系统, ...

  5. golang接口的封装

    一.声明接口 type Result interface { LastInsertId() (int64, error) RowsAffected() (int64, error) } 二.实现接口, ...

  6. Redis源码解析:22sentinel(三)客观下线以及故障转移之选举领导节点

    八:判断实例是否客观下线 当前哨兵一旦监测到某个主节点实例主观下线之后,就会向其他哨兵发送"is-master-down-by-addr"命令,询问其他哨兵是否也认为该主节点主观下 ...

  7. Javascript-简单的欢迎cookie

    0<!DOCT0000YPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml&quo ...

  8. MySQL系列(七)--SQL优化的步骤

    前面讲了如何设计数据库表结构.存储引擎.索引优化等内存,这篇文章会讲述如何进行SQL优化,也是面试中关于数据库肯定会被问到的, 这些内容不仅仅是为了面试,更重要的是付诸实践,最终用到工作当中 之前的M ...

  9. js中定义变量之②var let const的区别

    var 上一篇文章有讲过,是js定义变量的关键词. 但是在es6中,新添加了两个关键词,用于变量声明的关键词:let 和const 接下来就说一下var let 和const的区别: 首先说var 用 ...

  10. ACdream 1108(莫队)

    题目链接 The kth number Time Limit: 12000/6000MS (Java/Others)Memory Limit: 128000/64000KB (Java/Others) ...