Spring实战(第4版) 学习(2)-装配

创建应用组件之间协作的行为通常称为装配(wiring)。Spring有多种装配 bean的方式,采用XML是很常见的一种装配方式。程序清单1.6展现了一个 简单的Spring配置文件:knights.xml,该配置文件 将BraveKnight、SlayDragonQuest和PrintStream装配到了一起。

程序清单1.6

在这里,BraveKnight和SlayDragonQuest被声明为Spring中的bean。 就BraveKnight bean来讲,它在构造时传入了对SlayDragonQuest bean的引用,将其作为构造器参数。同时,SlayDragonQuest bean的声明 使用了Spring表达式语言(Spring Expression Language),将System.out(这是一个PrintStream)传入到了SlayDragonQuest的构造器 中。
 

如果XML配置不符合你的喜好的话,Spring还支持使用Java来描述配置。比 如,程序清单1.7展现了基于Java的配置,它的功能与程序清单1.6相同。

程序清单1.7

不管你使用的是基于XML的配置还是基于Java的配置,DI所带来的收益都是 相同的。尽管BraveKnight依赖于Quest,但是它并不知道传递给它的是什 么类型的Quest,也不知道这个Quest来自哪里。与之类 似,SlayDragonQuest依赖于PrintStream,但是在编码时它并不需要知道 这个PrintStream是什么样子的。只有Spring通过它的配置,能够了解这些 组成部分是如何装配起来的。这样的话,就可以在不改变所依赖的类的情况 下,修改依赖关系。
这个样例展现了在Spring中装配bean的一种简单方法。谨记现在不要过多关 注细节。第2章我们会深入讲解Spring的配置文件,同时还会了解Spring装配 bean的其他方式,甚至包括一种让Spring自动发现bean并在这些bean之间建 立关联关系的方式。
现在已经声明了BraveKnight和Quest的关系,接下来我们只需要装载XML 配置文件,并把应用启动起来。

观察它如何工作

Spring通过应用上下文(Application Context)装载bean的定义并把它们组装 起来。Spring应用上下文全权负责对象的创建和组装。Spring自带了多种应 用上下文的实现,它们之间主要的区别仅仅在于如何加载配置。
因为knights.xml中的bean是使用XML文件进行配置的,所以选 择ClassPathXmlApplicationContext[1]作为应用上下文相对是比较合适 的。该类加载位于应用程序类路径下的一个或多个XML配置文件。程序清单 1.8中的main()方法调用ClassPathXmlApplicationContext加载 knights.xml,并获得Knight对象的引用。
程序清单1.8   KnightMain.java加载包含 加载包含Knight的 的Spring上下文 

这里的main()方法基于knights.xml文件创建了Spring应用上下文。随后它调 用该应用上下文获取一个ID为knight的bean。得到Knight对象的引用后,只 需简单调用embarkOnQuest()方法就可以执行所赋予的探险任务了。注意这 个类完全不知道我们的英雄骑士接受哪种探险任务,而且完全没有意识到这 是由BraveKnight来执行的。只有knights.xml文件知道哪个骑士执行哪种探 险任务。

通过示例我们对依赖注入进行了一个快速介绍。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值