Spring 依赖注入的方式
Spring 支持3中依赖注入的方式
1、属性注入 通过setter 方法注入Bean的属性或依赖的对象。
<bean id = " " class = " ">
<property name = " " value = " "> </property>
<property name = " " value = " "> </property>
</bean>
2、构造器注入 通过构造方法注入Bean的属性值或依赖的对象,它保证Bean实例在实例化后就
可以使用
2.1 按索引匹配入参
<bean id = " " class = " ">
<constructor-arg value = " " index = "0"></constructor-arg>
<constructor-arg value = " " index = "1"></constructor-arg>
</bean>
2.2 按类型匹配入参
<bean id = " " class = " ">
<constructor-arg value = "value " type = "java.lang.String"></constructor-arg>
<constructor-arg value = " 5000" type = "double"></constructor-arg>
</bean>
3、工厂方法注入
bean的属性类型
1.字面值:可以用字符串表示的值,可以通过<value>元素标签或value属性进行注入,包括基本数据类型及其包装类、String的类型。若字面值包含特殊字符,可以使用<![CDATA[]]>把自勉之包裹起来。
2.引用其他Bean:可以在 Bean 的配置文件中通过 <ref> 元素或 ref 属性为 Bean 的属性或构造器参数指定对 Bean 的引用,也可以在属性或构造器里包含 Bean 的声明, 这样的 Bean 称为内部 Bean。
<bean id="zoghin2" class="springTest.Person">
<property name="name" value="zoghin2"></property>
<property name="sex" value="man"></property>
<property name="age" value="25"></property>
<property name="car">
<bean class="springTest.Car">
<property name="brand" value="db"></property>
<property name="speed" value="200"></property>
</bean>
</property>
</bean>
<bean id="zoghin3" class="springTest.Person">
<constructor-arg value="zoghin3"></constructor-arg>
<constructor-arg value="man" type="java.lang.String"></constructor-arg>
<constructor-arg value="20" type="int"></constructor-arg>
<constructor-arg>
<bean class="springTest.Car">
<property name="brand" value="db"></property>
<property name="speed" value="200"></property>
</bean>
</constructor-arg>
</bean>
3. null 值 可以使用专用的 <null/> 元素标签为 Bean 的字符串或其它对象类型的属性注入 null 值。
4.集合属性 在 Spring中可以通过一组内置的 xml 标签(例如: <list>, <set> 或 <map>) 来配置集合属性。
Java.util.Map 通过 <map> 标签定义, <map> 标签里可以使用多个 <entry> 作为子标签. 每个条目包含一个键和一个值。必须在 <key> 标签里定义键,因为键和值的类型没有限制, 所以可以自由地为它们指定 <value>, <ref>, <bean> 或 <null> 元素.可以将 Map 的键和值作为 <entry> 的属性定义: 简单常量使用 key 和 value 来定义; Bean 引用通过 key-ref 和 value-ref 属性定义
使用 <props> 定义 java.util.Properties, 该标签使用多个 <prop> 作为子标签. 每个 <prop> 标签必须定义 key 属性.
Spring 依赖注入的方式的更多相关文章
- Spring依赖注入的方式、类型、Bean的作用域、自动注入、在Spring配置文件中引入属性文件
1.Spring依赖注入的方式 通过set方法完成依赖注入 通过构造方法完成依赖注入 2.依赖注入的类型 基本数据类型和字符串 使用value属性 如果是指向另一个对象的引入 使用ref属性 User ...
- spring依赖注入的方式(一)
为了方便类的管理,spring提供了依赖注入的思想:类的实例化不由程序员控制,而是交给sprig容器进行管理. spring提供了多种类型的注入方式---注解.xml注入: 1 注解注入 有两种:@ ...
- Spring学习(三)——Spring中的依赖注入的方式
[前面的话] Spring对我太重要了,做个关于web相关的项目都要使用Spring,每次去看Spring相关的知识,总是感觉一知半解,没有很好的系统去学习一下,现在抽点时间学习一下Spring.不知 ...
- Spring 依赖注入优化
Spring 依赖注入优化 原创: carl.zhao SpringForAll社区 今天 Spring 最大的好处就是依赖注入,关于什么是依赖注入,在Stack Overflow上面有一个问题,如何 ...
- Spring依赖注入:@Autowired,@Resource和@Inject区别与实现原理
一.spring依赖注入使用方式 @Autowired是spring框架提供的实现依赖注入的注解,主要支持在set方法,field,构造函数中完成bean注入,注入方式为通过类型查找bean,即byT ...
- Spring依赖注入三种方式详解
在讲解Spring依赖注入之前的准备工作: 下载包含Spring的工具jar包的压缩包 解压缩下载下来的Spring压缩包文件 解压缩之后我们会看到libs文件夹下有许多jar包,而我们只需要其中的c ...
- Spring依赖注入的三种方式
看过几篇关于Spring依赖注入的文章,自己简单总结了一下,大概有三种方式: 1.自动装配 通过配置applicationContext.xml中的标签的default-autowire属性,或者标签 ...
- SSH深度历险记(八) 剖析SSH核心原则+Spring依赖注入的三种方式
于java发育.一类程序猿必须依靠类的其他方法,它是通常new依赖类的方法,然后调用类的实例,这样的发展问题new良好的班统一管理的例子.spring提出了依赖注入的思想,即依赖类不由程 ...
- SSH深度历险(八) 剖析SSH核心原理+Spring依赖注入的三种方式
在java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依 ...
随机推荐
- hmtl初学
hmtl+css实现小车轮子转动! <!DOCTYPE html> <html> <head lang="en"> <meta ...
- jquery 中的几个函数方法
1.$.map(data,function(item,index){return XXX})处理每一个元素的函数.第一个参数是数组元素,第二个参数是该元素的索引值. 遍历data数组中的每个元素,并按 ...
- Centreon 监控报警
1.系统更新:yum update 2.安装组件:yum install -y httpd php-pear php php-mysql php-gd php-ldap php-xml php-mbs ...
- 化繁为简 如何向老婆解释MapReduce?(转载)
化繁为简 如何向老婆解释MapReduce? 昨天,我在Xebia印度办公室发表了一个关于MapReduce的演说.演说进行得很顺利,听众们都能够理解MapReduce的概念(根据他们的反馈).我成功 ...
- 代码中特殊的注释技术——TODO、FIXME和XXX的用处
前言:今天在阅读Qt Creator的源代码时,发现一些注释中有FIXME英文单词,用英文词典居然查不到其意义!实际上,在阅读一些开源代码时,我们常会碰到诸如:TODO.FIXME和XXX的单词,它 ...
- centos中开机时如何自启动samba服务器
解决办法如下:1.编辑rc.local文件#vi /etc/rc.d/rc.local2.加入如下启动命令/usr/sbin/apachectl start/etc/rc.d/init.d/mysql ...
- linux -小记(1) 问题:"linux ifconfig查看网卡名称与配置文件不否" 或 启动网卡提示“ eth0 似乎不存在, 初始化操作将被延迟”。
"linux ifconfig查看网卡名称与配置文件不否" 或 启动网卡提示" eth0 似乎不存在, 初始化操作将被延迟" . 问题 1. service n ...
- [转]C++ DLL远程注入与卸载函数
代码是别处的 第一个函数是成功的,第二个函数运行发现会将目标程序挂死,也许是目标程序有保护机制 支持Unicode编码. //------------------------------------- ...
- jboss端口说明
http://blog.csdn.net/yangbobo1992/article/details/8876587 jboss端口修改说明 1. jboss 的端口修改位置总结 Jboss通常占用的端 ...
- 实习日记:图像检索算法 LSH 的总结与分析
先贴上这两天刚出炉的C++代码.(利用 STL 偷了不少功夫,代码待优化) Head.h #ifndef HEAD_H #define HEAD_H #include "D:\\LiYang ...