《Spring攻略(第2版)》——第1章 Spring简介 1.1实例化Spring IoC容器

第1章 Spring简介

在本章中,你将参加关于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 实例化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编写和编译代码。

<dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-aop</artifactId>
 <version>${spring.version}</version>
</dependency>

<dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-web</artifactId>
 <version>${spring.version}</version>
</dependency>

<dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-context-support</artifactId>
 <version>${spring.version}</version>
</dependency>

<dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-beans</artifactId>
 <version>${spring.version}</version>
</dependency>

<dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-context</artifactId>
 <version>${spring.version}</version>
</dependency>

<dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-core</artifactId>
 <version>${spring.version}</version>
</dependency>

1.1.3 工作原理
实例化应用程序上下文
ApplicationContext仅仅是一个接口,你必须实例化一个接口的实现。ClassPathXml ApplicationContext实现从classpath中装入一个XML配置文件,构建一个应用程序上下文。你也可以为其指定多个配置文件。

ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
除了ClassPathXmlApplicationContext,Spring还提供多种其他的ApplicationContext实现。FileSystemXmlApplicationContext用于从文件系统或者URL装载XML配置文件,而XmlWebApplicationContext和XmlPortletApplicationContext仅能用于Web和入口应用程序。

从IoC容器中得到Bean
为了从bean工厂或者应用程序上下文中得到已声明的bean,你只需要调用getBean()方法并且传递唯一的bean名称。getBean()方法的返回类型为java.lang.Object,在使用之前你必须将其转换为实际的类型。

SequenceGenerator generator =
   (SequenceGenerator) context.getBean("sequenceGenerator");

到了这一步,你就能够像使用任何使用构造程序创建的对象一样,自由地使用bean了。

运行这个序列生成器应用程序的完整源代码在下面的Main类中给出:

package com.apress.springrecipes.sequence;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Main {

   public static void main(String[] args) {
     ApplicationContext context =
        new ClassPathXmlApplicationContext("beans.xml");
     SequenceGenerator generator =
        (SequenceGenerator) context.getBean("sequenceGenerator");
     System.out.println(generator.getSequence());
     System.out.println(generator.getSequence());
   }
}

如果一切正常,你应该看到如下的序列号输出,以及一些你可能不感兴趣的记录信息:

30100000A

30100001A
时间: 2024-12-03 08:57:14

《Spring攻略(第2版)》——第1章 Spring简介 1.1实例化Spring IoC容器的相关文章

阿里妈妈联盟申请注册攻略(站长版)

中介交易 SEO诊断 淘宝客 云主机 技术大厅 阿里妈妈注册攻略(站长版) 阿里妈妈面世已经快一个月了,有很多朋友对于阿里妈妈的注册以及发布广告位流程不是很清楚.特别是作为 卖家,对于发布广告位之类的操作了解不多,特发布注册秘笈,以帮助大家更好的理解阿里妈妈的运作流程. 整体来说,要想成功在阿里妈妈注册,需要完成三个步骤: 一.注册成为阿里妈妈的会员 二.登记网站并发布广告位 三.投放广告代码 注意:上面这三个步骤主要是针对卖家在阿里妈妈出售广告位. 话不多说,开始注册了! 第一部分 注册成为阿

《Spring攻略(第2版)》——1.2 配置Spring IoC容器中的Bean

1.2 配置Spring IoC容器中的Bean 1.2.1 问题 Spring提供了一个强大的IoC容器来管理组成应用的bean.为了利用容器服务,你必须配置运行于Spring IoC容器中的Bean. 1.2.2 解决方案 你可以通过XML文件.属性文件.注释甚至API来配置Spring IoC容器中的Bean. Spring允许你在一个或者多个bean配置文件中配置bean.对于简单的应用程序,可以在单个配置文件中集中配置bean.但是对于有许多bean的大型应用,你应该根据其功能(例如控

《Spring攻略(第2版)》——1.5 指定Bean引用

1.5 指定Bean引用 1.5.1 问题 组成应用程序的Bean往往需要互相协作完成应用功能.为了Bean之间的相互访问,你必须在Bean配置文件中指定Bean引用. 1.5.2 解决方案 在Bean配置文件中,你可以用元素为Bean属性或者构造程序参数指定Bean引用.只需要用元素指定一个简单值就可以轻松完成这一工作.你也可以像内部Bean一样直接地在属性或者构造程序中包含一个Bean声明. 1.5.3 工作原理 在你的序列生成器中接受字符串值作为前缀的灵活性不足以满足将来的要求.如果前缀生

《Spring攻略(第2版)》——1.12 用@Autowired和@Resource自动装配Bean

1.12 用@Autowired和@Resource自动装配Bean 1.12.1 问题 在Bean配置文件中设置autowire属性进行的自动装配将装配一个Bean的所有属性.这样的灵活性不足以仅仅装配特定的属性.而且,你只能通过类型或者名称自动装配Bean.如果这两种策略都不能满足你的需求,就必须明确地装配Bean. 1.12.2 解决方案 从Spring 2.5起,自动装配功能进行了多处改进.你可以通过用@Autowired或者@Resource(在JSR-250:Java平台常见注解中定

《Spring攻略(第2版)》——导读

前言 Spring框架正在成长.它始终与选择相关.Java EE关注于少数几项技术,很大程度上阻碍了更好的替代解决方案出现.当Spring框架出现时,没有多少人还会承认Java EE是当今最佳的架构. 随后Spring被大张旗鼓地推出,因为它寻求简化Java EE.此后其每个版本都引入设计用来简化和实现解决方案的新特性. 从2.0版本之后,Spring框架开始针对多平台.和往常一样,该框架提供了现有平台之上的服务,但是尽可能去除与底层平台的耦合.Java EE仍然是主要的参考点,但是不是唯一的目

《Spring攻略(第2版)》——1.11 用XML配置自动装配Bean

1.11 用XML配置自动装配Bean 1.11.1 问题 当一个Bean需要访问另一个Bean时,你可以显式指定引用装配它.但是,如果你的容器能够自动装配Bean,就可以免去手工配置装配的麻烦. 1.11.2 解决方案 Spring IoC容器能够帮助你自动装配Bean.你只要在的autowire属性中指定自动装配模式就可以了.表1-2列出了Spring支持的自动装配模式. *默认模式是no,但是可以设置根元素的default-autowire属性修改.这个默认模式将被Bean自己指定的模式覆

《Spring攻略(第2版)》——1.9 用依赖检查属性

1.9 用依赖检查属性 1.9.1 问题在大规模的应用中,IoC容器中可能声明了几百个或者几千个Bean,这些Bean之间的依赖往往非常复杂.设值方法注入的不足之一是无法确定一个属性将会被注入.检查所有必要的属性是否已经设置是非常困难的. 1.9.2 解决方案Spring的依赖检查功能能够帮助你检查在一个Bean上的所有特定类型属性是否都已经设置.你只要在的dependency-check属性中指定依赖检查模式就可以了.注意,依赖检查功能只能检查属性是否已经设置,而无法检查它们的值是否非空.表1

《Spring攻略(第2版)》——1.10 用@Required注解检查属性

1.10 用@Required注解检查属性 1.10.1 问题Spring的依赖检查功能仅能检查某些类型的所有属性.它的灵活性不够,不能仅检查特定的属性.在大部分情况下,你希望检查特定的属性是否设置,而不是特定类型的所有属性. 1.10.2 解决方案RequiredAnnotationBeanPostProcessor是一个Spring bean后处理器,检查带有@Required注解的所有Bean属性是否设置.Bean后处理器是一类特殊的Spring bean,能够在每个Bean初始化之前执行

《Spring攻略(第2版)》——1.15 小结

1.15 小结 在本章中,你已经学习了Spring IoC容器中的基本Bean配置.Spring支持多种Bean配置.在这些配置中,XML是最简单和最自然的.Spring提供两种IoC容器实现.基本的实现是Bean工厂,高级的实现是应用程序上下文.如果可能,你应该使用应用程序上下文,除非资源有限.Spring支持用Setter注入和构造程序注入定义Bean属性,属性可以是简单值.集合或者Bean引用. 依赖检查和自动装配是Spring提供的两种有价值的容器特性.依赖检查帮助检查所有必要的属性是否