本节书摘来自异步社区《spring攻略(第2版)》一书中的第1章,第1.1节,作者: 【美】gary mak , josh long , daniel rubio著,更多章节内容可以访问云栖社区“异步社区”公众号查看
在本章中,你将参加关于spring、核心容器以及容器所提供的一些全局可用设施的一个速成班(或者一次复习),你还将了解spring xml配置格式,以及注释驱动的支持。本章将带给你应付本书余下部分中引入的概念所需要的知识。你将学习spring ioc容器中的基本组件配置。在spring框架的核心部分,ioc容器的设计具有高度的适应性和可配置性,提供了使你的组件配置尽可能简单的一组工具。你能够很简单地设置运行于spring ioc容器中的组件。
在spring中,组件也被称为“bean”。注意,这是与sun定义的javabeans规范不同的概念。spring ioc容器中声明的bean不一定是javabean。它们可以是任何的pojo(简单java对象)。pojo这个术语的意思是没有任何特殊要求(像实现特殊接口或者扩展特殊的基类)的普通java对象。这个术语用于将轻量级的java组件与其他复杂组件模型(例如ejb规范版本3.1以前的ejb组件)中的重量级组件区分开来。
到本章结束时,你将能够使用spring ioc容器构建一个完整的java应用程序。而且,如果你回顾旧的java应用程序,可能会发现自己可以使用spring ioc容器显著地简化和改进它们。
1.1.1 问题
你必须实例化spring ioc容器,读取其配置来创建bean实例。然后,你可以从spring ioc容器中得到可用的bean实例。
1.1.2 解决方案
spring提供两种ioc容器实现类型。基本的一种称为bean工厂(bean factory)。更高级的一种称为应用程序上下文(application context),这是对bean工厂的一种兼容的扩展。
注意,这两种ioc容器类型的bean配置文件相同。
应用程序上下文提供比bean工厂更高级的特性,同时保持基本特性的兼容。所以除非是资源有限的应用程序(例如运行于一个小脚本或者移动设备上),否则我们强烈推荐使用应用程序上下文。
bean工厂和应用程序上下文的接口分别是beanfactory和applicationcontext。application context接口是用于保持兼容性的beanfactory子接口。
注:
为了编译和运行本章和后续章节中介绍的spring代码,你必须在classpath上有spring框架的依赖(dependencies)。推荐的方法是使用apache maven或者apache ant and ivy这样的构建管理解决方案。如果你打算使用maven,将下面列出的依赖添加到maven项目中。和其他地方一样,我们使用${spring.version}标记来引用版本。你可以用对你最合适的版本来替换这一标记。本书使用版本3.0.2.release编写和编译代码。
1.1.3 工作原理
实例化应用程序上下文
applicationcontext仅仅是一个接口,你必须实例化一个接口的实现。classpathxml applicationcontext实现从classpath中装入一个xml配置文件,构建一个应用程序上下文。你也可以为其指定多个配置文件。
<code>applicationcontext context = new classpathxmlapplicationcontext("beans.xml");</code>
除了classpathxmlapplicationcontext,spring还提供多种其他的applicationcontext实现。filesystemxmlapplicationcontext用于从文件系统或者url装载xml配置文件,而xmlwebapplicationcontext和xmlportletapplicationcontext仅能用于web和入口应用程序。
从ioc容器中得到bean
为了从bean工厂或者应用程序上下文中得到已声明的bean,你只需要调用getbean()方法并且传递唯一的bean名称。getbean()方法的返回类型为java.lang.object,在使用之前你必须将其转换为实际的类型。
到了这一步,你就能够像使用任何使用构造程序创建的对象一样,自由地使用bean了。
运行这个序列生成器应用程序的完整源代码在下面的main类中给出:
如果一切正常,你应该看到如下的序列号输出,以及一些你可能不感兴趣的记录信息: