- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Spring的依赖注入
依赖注入,是Spring的核心机制,可以使Spring的bean以配置文件组织在一起,而不是以硬编码的方式耦合在一起 所谓依赖注入,是指在程序运行过程中,如果需要调用另一个对象协助时,无须在代码中创建被调用者,而是依赖于外部的注入,Spring的依赖注入对调用者和被调用者几乎没有任何要求,完全支持对POJO之间依赖关系的管理
依赖注入通常有两种:
设值注入
构造注入
设值注入是指通过setter方法传入被调用者的实例。
Person接口代码如下:
public interface Person
{
//Person接口里定义一个使用斧子的方法
public void useAxe();
}
Axe接口的代码如下:
public interface Axe
{
//Axe接口中有一个砍的方法
public void chop();
}
Person接口的实现类代码如下:
public class Chinese implements Person
{
//面向Axe接口编程,而不是具体的实现类
private Axe axe ;
//默认的构造器
public Chinese(){
}
//设置注入所需的setter方法
public void setAxe(Axe axe){
this.axe = axe;
}
//实现Person接口的useAxe方法
public void useAxe(){
System.out.println( axe.chop());
}
}
Axe的第一个实现类代码如下:
public class StoneAxe implements Axe{
//默认构造器
public StoneAxe(){
}
public String chop(){
return 石斧砍的真慢 ;
}
}
下面采用Spring的配置文件将Person实例和Axe实例组织在一起,配置文件如下所示:
?xml version=1.0 encoding= UTF-8?
!-- beans是Spring配置文件的根元素 --
beans xmlns=/schema/beans
xmlns:xsi=/2001/XMLSchema-instance
xsi:schemaLocation=/schema/beans
/schema/beans/spring-beans-2.5.xsd
!-- 定义第一个bean,该bean的id为 chinese,class指定该bean实例的实现类 --
bean id= chinese class =lee.Chinese
!-- property元素用来指定需要容器注入的属性,axe属性需要容器注入,
此处是设值注入,因此Chinese类必须拥有setXxx方法 --
property name=axe
ref local=stoneAxe /
/property
/bean
!-- 定义第一个stoneAxe bean --
bean id= stoneAxe class =lee.StoneAxe/
/beans
从配置文件可以看到Spring管理bean的灵巧性,bean与bean之间的依赖关系被放在配置文件里组织,而不是写在代码中,通过配置文件的指定,Spring能精确的为每个bean注入属性,因此,配置文件里bean的class元素不能使接口 ,而必须是真正的实现类,
另外,Spring会自动接管每个bean定义里的property元素定义,Spring会在执行无参数的构造器后,创建默认的bean实例,并调用对应的setter方法为程序注入属性值,在这里,property定义的属性值将不再由该bean来主动创建和管理,而是接收Spring的注入
每个bean的id属性是该bean的唯一标识,程序通过id属性来访问bean,bean与bean的依赖关系也通过id属性关联
下面是主程序部分
public class B
您可能关注的文档
最近下载
- 力荐北大一个剧本作家之死.docx VIP
- CQI-11第3版中英文表格.xlsx VIP
- 部编版《道德与法治》一年级上册上册第7课《上课了,好好学》精美课件.pptx VIP
- 2024版人教版七年级上册数学数轴动点问题专项练习每日一练.pdf VIP
- 2024-2025学年江苏省苏州市昆山市七年级(上)期中语文试卷(含详细答案解析).docx VIP
- 最新化工原理实验课件.doc VIP
- 江苏省苏州四市联考2024-2025学年七年级上学期期中考试英语试题.docx VIP
- 钢筋工安全操作规程.doc
- 中班户外体育活动教案100篇.doc VIP
- 部编版道德与法治二年级上册《班级生活有规则》(精品课件).ppt VIP
原创力文档


文档评论(0)