Sprng中的的依赖注入学习指导.docVIP

Sprng中的的依赖注入学习指导.doc

此“医疗卫生”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
下面和大家分享的是依赖注入中的设值注入,依赖注入(Dependency Injection)和控制反转(Inversion of Control)是同一个概念。具体含义是:当某个角色(可能是一个Java实例,调用者)需要另一个角色(另一个Java实例,被调用者)的协助时,在传统的程序设计过程中,通常由调用者来创建被调用者的实例。但在Spring里,创建被调用者的工作不再由调用者来完成,因此称为控制反转;创建被调用者实例的工作通常由Spring容器来完成,然后注入调用者,因此也称为依赖注入。 设值注入 设值注入是指通过setter方法传入被调用者的实例。这种注入方式简单、直观,因而在Spring的依赖注入里大量使用。看下面代码,是Person的接口。 Java代码 //定义Person接口 public interface Person {  //Person接口里定义一个使用斧子的方法  public void useAxe(); } Java代码 //定义Axe接口 public interface Axe {  //Axe接口里有个砍的方法  public void chop(); } Person Java代码 //Chinese实现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 Java代码 //Axe的第一个实现类 StoneAxe public class StoneAxe implements Axe {  //默认构造器  public StoneAxe()  {}  //实现Axe接口的chop方法  public String chop()  { return 石斧砍柴好慢;  } } XML代码 <!-- 下面是标准的XML文件头 --> <?xml version=1.0 encoding=gb2312?> <!-- 下面一行定义Spring的XML配置文件的dtd --> /dtd/spring-beans.dtd> <!-- 以上三行对所有的Spring配置文件都是相同的 --> <!-- Spring配置文件的根元素 --> <BEANS>  <!—定义第一bean,该bean的id是chinese, class指定该bean实例的实现类 -->  <BEAN class=lee.Chinese id=chinese>  <!-- property元素用来指定需要容器注入的属性,axe属性需要容器注入此处是设值注入,因此 Chinese类必须拥有setAxe方法 --> <property name=axe> <!-- 此处将另一个bean的引用注入给chinese bean --> <REF local=”stoneAxe”/> </property> </BEAN> <!-- 定义stoneAxe bean --> <BEAN class=lee.StoneAxe id=stoneAxe /> </BEANS> Spring会自动接管每个bean定义里的property元素定义。Spring会在执行无参数的构造器后、创建默认的bean实例后,调用对应的setter方法为程序注入属性值。property定义的属性值将不再由该bean来主动创建、管理,而改为被动接收Spring的注入。 每个bean的id属性是该bean的惟一标识,程序通过id属性访问bean,bean与bean的依赖关系也通过id属性完成。 下面看主程序部分: Java代码 public class BeanTest {  //主方法,程序的入口  public static void main(String[] args)throws Exception  { //因为是独立的应用程序,显式地实例化Spring的上下文。 ApplicationContext ctx = new FileSystemXmlApplicationContext(bean.xml); //通过Person bean的id来获取bean实例,面向接口编程,因此 //此处强制类型转换为接口类型 Person p = (Person)ctx.g

文档评论(0)

phl805 + 关注
实名认证
文档贡献者

建筑从业资格证持证人

该用户很懒,什么也没介绍

领域认证该用户于2023年05月12日上传了建筑从业资格证

1亿VIP精品文档

相关文档