配置文件的根元素是beans,每个组件使用bean元素来定义,bean元素可以有许多属性,其中有两个是必须的:id和class。id表示组件的默认名称,class表示组件的类型。

  1. 依赖注入的方式:  constructor-arg:通过构造函数注入。   property:通过setxx方法注入。
  2. 设值注入,使用property子标签:

    <bean id="renderer" class="com.apress.prospring.ch2.StandardOutMessageRenderer">                       <property name="messageProvider">

    <ref local="provider"/>

    </property>

    </bean>

  3. 构造子注入,使用constructor-arg子标签:

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

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

    </constructor-arg>

    </bean>

  4. 使用constructor-arg标签的index属性,对应于构造函数的多个参数,index属性的值从0开始。   

    <bean id="provider" lass="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>

  5. 使用constructor-arg的type属性,避免构造子冲突:

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

    <constructor-arg type="int">

    <value>90</value>

    </constructor-arg>

    </bean>

    public class ConstructorConfusion {

    public ConstructorConfusion(String someValue) {

    System.out.println("ConstructorConfusion(String) called");

    }

    public ConstructorConfusion(int someValue) {

    System.out.println("ConstructorConfusion(int) called");

    }

    }

  6. 注入集合属性,使用list,map,set和props标签,分别对应List,Map,Set和Properties:

    <bean id="injectCollection" class="com.apress.prospring.ch4.CollectionInjection">

    <property name="map">

    <map>

    <entry key="someValue">

    <value>Hello World!</value>

    </entry>

    <entry key="someBean">

    <ref local="oracle"/>

    </entry>

    </map>

    </property>

    <property name="props">

    <props>

    <prop key="firstName">

    Rob

    </prop>

    <prop key="secondName">

    Harrop

    </prop>

    </props>

    </property>

    <property name="set">

    <set>

    <value>Hello World!</value>

    <ref local="oracle"/>

    </set>

    </property>

    <property name="list">

    <list>

    <value>Hello World!</value>

    <ref local="oracle"/>

    </list>

    </property>

    </bean>

转载于:https://www.cnblogs.com/-strong/p/7651912.html

Spring框架中constructor-arg与property理解相关推荐

  1. 理解Spring框架中Bean的作用域

    本篇介绍Spring Bean实例的作用范围,Spring Bean实例的作用范围由配置项scope限定.通过本篇的学习,可以达成如下目标. ● 应用scope配置项配置Bean的作用域 ● 应用单例 ...

  2. Spring框架中的设计模式(一)

    设计模式有助于遵循良好的编程实践.作为最流行的Web框架之一的Spring框架也使用其中的一些. 本文将介绍Spring Framework中使用的设计模式.这是5篇专题文章的第一部分.这次我们将发现 ...

  3. Spring框架中的Bean

    1.什么是Bean? 在Spring框架中,Bean是指一个由Spring容器管理的对象.这个对象可以是任何一个Java类的实例,例如数据库连接.业务逻辑类.控制器等等.Bean实例的创建和管理是由S ...

  4. spring框架_一篇文章带你理解Spring框架

    虽然现在流行用SpringBoot了,很多配置已经简化和封装了,但是对于Spring的一些基础我们了解一些是对我们自己的架构思想很有帮助的!接下来和笔者一起来探讨一下Spring框架吧! 1.什么是S ...

  5. 在Spring框架中使用SQL存储过程

    Spring框架也支持对SQL存储过程的调用,SQL存储过程是一组预先定义好的SQL语句,并存储到数据库管理系统中,外部程序可以直接调用执行.本课主要讨论在Spring框架中应用程序如何调用MySQL ...

  6. Spring框架中提取list集合类型属性注入

    提取list集合类型属性注入 前言 引入名称空间 编写`xml`配置文件 运行结果 前言 对于某一个类型属性通用性较高的情况下,可以单独的提取出来,给需要的bean进行引用. 有关类的创建见<S ...

  7. Spring框架中集合属性为对象的注入方法

    Spring框架中集合属性为对象的注入方法 前言 创建基础类 创建`Course`类 编写XML配置文件 创建测试类 执行结果 前言 在集合的属性注入中,如果注入属性为普通类型(String.int) ...

  8. Spring框架中XML配置文件注入集合(数组、LIST、MAP、SET)属性

    Spring框架中XML配置文件注入集合属性 前言 创建测试类与属性 配置XML配置文件 建立调用类 调用结果 前言 某些类的属性是可能是集合,包括:数组.LIST.MAP.SET等集合,在Sprin ...

  9. Spring框架中级联赋值(外部属性注入)以及内部属性注入

    Spring框架中级联赋值(外部属性注入)以及内部属性注入 前言 级联赋值 1.对上述外部`Bean`配置文件进行修改: 2.级联赋值第二种写法 内部`bean`属性注入 前言 Spring框架中存在 ...

  10. Spring框架中XML配置特殊属性注入

    Spring框架中XML配置特殊属性注入 前言 创建测试类 其他类型属性 前言 Spring框架中,在通过set方式进行属性注入时,可能会遇到某些特殊字符的注入,例如:null和某些标签字符" ...

最新文章

  1. shell学习之shell基础知识了解
  2. 3月Win 10美占有率超20% 免费升级是否延长受关注
  3. 用DocumentFragments或innerHTML取代复杂的元素注入
  4. 计算机专业到投行的工作需要的金融财务知识
  5. printf linux 头文件,Linux C 格式化输出时要注意的问题
  6. findfirstfile函数为什么不能遍历doc_编程之美:IO多路复用——记性不好的poll函数...
  7. webrtc回声消除线程android,android WebRTC 示例demo源码(回音消除)
  8. 在Visual Studio 2010中创建多项目(解决方案)模板之关键步骤【四】
  9. 大楼通信综合布线系统_系统梳理一下综合布线系统的方方面面
  10. 单播 广播 组播_【技术解析】关于组播概念那些你需要知道的~
  11. vivo真实案例:中台到底解决了什么问题?
  12. 用css和js写表单验证,使用javascript及正则表达式实现表单验证(CSS,js练习)
  13. 如何判断一个大佬值不值得跟随
  14. iOS和android运存机制,再次确认苹果的1G运存相当于安卓的4G运行内存
  15. java日期处理SimpleDateFormat等
  16. NumPy库---数组的基本操作
  17. nginx 映射ip端口服务
  18. 多媒体技术期末复习资料
  19. c语言头文件sys wait.h,错误:sys/wait.h:没有这样的文件或目录
  20. 美化字体 css3,美化你空间的文字:20种CSS字体镜像特效

热门文章

  1. (7)数据结构-基本队列实现
  2. 原python基础概念整理_python基础知识脉络梳理总结
  3. 顺序栈实现迷宫求解问题v0.1
  4. Caffe学习系列(16):caffemodel可视化
  5. 如何使用XGBoost开发随机森林集成
  6. sklearn常用聚类算法模型【KMeans、DBSCAN】实践
  7. one_hot编码学习与实践
  8. gvdp哪个工厂用_ppr铝塑管和ppr水管哪个更适合家装?
  9. 2021-07-01数组和对象循环
  10. truffle部署指定的合约到指定网络