- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Spring依赖注入的几种方式
spring依赖注入使用构造器注入
使用属性setter方法注入
使用Field注入(用于注解方式)
注入依赖对象可以采用手工装配或自动装配,在实际应用中建议使用手工装配,因为自动装配会产生未知情况,开发人员无法预见最终的装配结果。
1.手工装配依赖对象
手工装配依赖对象,在这种方式中又有两种编程方式
*? 在xml配置文件中,通过在bean节点下配置
*? 在java代码中使用@Autowired或@Resource注解方式进行装配
依赖注入--手工装配--XML方式
通过setter方法注入依赖
bean元素的 property 子元素指明了使用它们的set方法来注入。可以注入任何东西,从基本类型到集合类,甚至是应用系统的bean。
通过setter方法注入依赖
*?? 简单bean配置
配置bean的简单属性,基本数据类型和String。
bean id=personService?class=com.test.bean.impl.PersonServiceImpl
!-- 基本类型,string类型 --
property name=agevalue=20/property
property name=name value=张无忌/property
/bean
通过setter方法注入依赖
*引用其它bean
beanid=personclass=com.test.bean.Person /
beanid=personService
class=com.test.bean.impl.PersonServiceImpl
!-- 引用类型 --
propertyname=person ref=person //bean
* 内部bean
beanid=personServiceclass=com.test.bean.impl.PersonServiceImpl
!-- 内部bean注入 --
propertyname=personClass
beanclass=com.test.bean.PersonClass /
/propert
/bean
这种方式的缺点是你无法在其它地方重用这个personClass实例,原因是它是专门为personService而用。
*装配集合
若bean的属性是集合类型,按如下处理:
A、装配List和数组:
!-- 装配list --
property name=lists
list
valuelist1/value
valuelist2/value
ref bean=person/
/list
/property
!--装配数组 --
property name=obj
list
valueobj1/value
valueobj2/value
refbean=person/
/list
/property
B、 装配set:
!--装配set --
property name=sets
set
valueset1/value
valueset2/value
refbean=person/
/set
/property
set使用方法和list一样,不同的是对象被装配到set中,而list是装配到List或数组中装配。
*装配集合
C、装配map:
!-- 装配map--
propertyname=maps
map
entry key=01
valuemap01/value
/entry
entry key=02
valuemap02/value
/entry
/map
/property
map中的entry的数值和list以及set的一样,可以使任何有效的属性元素,需要注意的是key值必须是String的。
D、装配Properties:
!--装配Properties? --
property name=props
props
prop key=01prop1/prop
prop key=02prop2/prop
/props
/property
E、设置null:
!--装配null --
property name=listnull
null/
/property
通过参数的顺序:
constructor-argindex=0
value张三/value
/constructor-arg
constructor-argindex=1
value56/value
/constructor-arg
通过构造函数注入依赖
!--通过参数的类型 --
constructor-argtype=java.lang.Integer
value56/value
/constructor-arg
constructor-argtype=java.lang.
文档评论(0)