配置文件的根元素是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>

Spring框架中<constructor-arg>与<property>理解的更多相关文章

  1. Spring5源码解析-Spring框架中的单例和原型bean

    Spring5源码解析-Spring框架中的单例和原型bean 最近一直有问我单例和原型bean的一些原理性问题,这里就开一篇来说说的 通过Spring中的依赖注入极大方便了我们的开发.在xml通过& ...

  2. Spring框架中文件目录遍历漏洞 Directory traversal in Spring framework

    官方给出的描述是Spring框架中报告了一个与静态资源处理相关的目录遍历漏洞.某些URL在使用前未正确加密,使得攻击者能够获取文件系统上的任何文件,这些文件也可用于运行SpringWeb应用程序的进程 ...

  3. 再析在spring框架中解决多数据源的问题

    在前面我写了<如何在spring框架中解决多数据源的问题>,通过设计模式中的Decorator模式在spring框架中解决多数据源的问题,得到了许多网友的关注.在与网友探讨该问题的过程中, ...

  4. Spring框架中 配置c3p0连接池 完成对数据库的访问

    开发准备: 1.导入jar包: ioc基本jar jdbcTemplate基本jar c3p0基本jar 别忘了mysql数据库驱动jar 原始程序代码:不使用配置文件方式(IOC)生成访问数据库对象 ...

  5. Spring框架中的定时器 使用和配置

    Spring框架中的定时器 如何使用和配置 转载自:<Spring框架中的定时器 如何使用和配置>https://www.cnblogs.com/longqingyang/p/554543 ...

  6. 细说shiro之五:在spring框架中集成shiro

    官网:https://shiro.apache.org/ 1. 下载在Maven项目中的依赖配置如下: <!-- shiro配置 --> <dependency> <gr ...

  7. Spring框架中IoC(控制反转)的原理(转)

    原文链接:Spring框架中IoC(控制反转)的原理 一.IoC的基础知识以及原理: 1.IoC理论的背景:在采用面向对象方法设计的软件系统中,底层实现都是由N个对象组成的,所有的对象通过彼此的合作, ...

  8. Spring框架中 配置c3p0连接池

    开发准备: 1.导入jar包: ioc基本jar jdbcTemplate基本jar c3p0基本jar 别忘了mysql数据库驱动jar 原始程序代码:不使用配置文件方式(IOC)生成访问数据库对象 ...

  9. Spring框架中ModelAndView、Model、ModelMap区别

    原文地址:http://www.cnblogs.com/google4y/p/3421017.html SPRING框架中ModelAndView.Model.ModelMap区别   注意:如果方法 ...

  10. 【Spring】8、Spring框架中的单例Beans是线程安全的么

    看到这样一个问题:spring框架中的单例Beans是线程安全的么? Spring框架并没有对单例bean进行任何多线程的封装处理.关于单例bean的线程安全和并发问题需要开发者自行去搞定.但实际上, ...

随机推荐

  1. GIt -- fatal: refusing to merge unrelated histories 问题处理

    今晚碰到这个问题-- fatal: refusing to merge unrelated histories 想了一下,为什么就这样了? 因为我是先本地创建了仓库,并添加了文件,然后再到github ...

  2. springboot idea 代码更改自己编译设置

    第一步:在pom.xml文件中添加springboot 编译依赖 <dependency> <groupId>org.springframework.boot</grou ...

  3. Mac 小功能

    Safari  安装扩展    https://safari-extensions.apple.com/?category=translation 关闭第三方验证  有时候打开自己下载的安装包会提示 ...

  4. PADS Router VX.2.3 设置光标的类型

    操作系统:Windows 10 x64 工具:PADS Router VX.2.3 菜单:Tools > Options...(快捷键:Ctrl + <Enter>) 在Option ...

  5. 浅谈Python装饰器

    一.概念 装饰器是Python语言中的高级语法.主要的功能是对一个函数.方法.或者类进行加工,作用是为已经存在的对象添加额外的功能,提升代码的可读性.装饰器是设计模式的一种,被用于有切面需求的场景,较 ...

  6. C++输出九九乘法表

    #include "pch.h" #include <iostream> #include <iomanip> using namespace std; i ...

  7. 公司外网测试服务器 redis 被攻击复盘

    最近 公司外网的测试的 redis 服务器被攻击,最开始是用 docker 搭建的 直接裸奔在外网,任何域名都可以通过 ip+6379来访问,最开始想的是测试服务器也没有啥,后面直接就被人登陆进去改了 ...

  8. Angular 自定义拖拽指令

    指令 组件是一种带模版的指令.指令是超级. 结构型指令(改变布局)和属性型指令(改变外观和行为). Renderer2和ElementRef Angular不提倡直接操作DOM 对于DOM的操作应该通 ...

  9. ubuntu配置小飞机

    现在有两种方式在ubuntu配置本地shadowsocks(前提已经在服务器上搭建好了ss) windows,ios和安卓配置都是gui,没什么好说的.然后前期工作什么买vps啊,比较无脑,不想记录这 ...

  10. mysql免解压版的配置

    很多朋友在安装mysq解压版l时出现: “mysql 服务无法启动 服务没报告任何错误” 以前我安装时也是遇到这样的问题: 其实mysql在5.6后就没有了data目录,很多朋友按照以前的版本安装会去 ...