容器概述
org.springframework.context.ApplicationContext是Spring IoC容器实现的代表,它负责实例化,配置和组装Bean。容器通过读取配置元数
据获取有关实例化、配置和组装哪些对象的说明 。配置元数据可以使用XML、Java注解或Java代码来呈现。它允许你处理应用程序的对象与其
他对象之间的互相依赖关系。
Spring提供了ApplicationContext接口的几个实现。 在独立应用程序中,通常创建ClassPathXmlApplicationContext或FileSystemXmlApplicationContext的实例。虽然XML一直是定义配置元数据的传统格式, 但是您可以指定容器使用Java注解或编程的方式编写
元数据格式,并通过提供少量的XML配置以声明对某些额外元数据的支持。
在大多数应用场景中,不需要用户显式的编写代码来实例化IOC容器的一个或者多个实例。例如,在Web应用场景中,只需要在web.xml中
添加大概8行简单的web描述样板就行了。( 便捷的ApplicationContext实例化Web应用程序) 如果你使用的是基于Eclipse的Spring Tool Suite
开发环境,该样板配置只需点击几下鼠标或按几下键盘就能创建了。
配置元数据
Spring IOC容器使用元数据配置这种形式,这个配置元数据表示了应用开发人员告诉Spring容器以何种方式实例化、配置和组装应用程序中的对象。
基于xml配置
配置元数据通常以简单、直观的XML格式提供,本章的大部分内容都使用这种格式来说明Spring IoC容器的关键概念和特性。
XML并不是配置元数据的唯一方式,Spring IoC容器本身是完全与元数据配置的实际格式分离的。现在,许多开发人员选择基于Java的配置来开发应用程序。
基于注解的配置
Spring 2.5 支持基于注解的元数据配置.
基于Java的配置
从 Spring 3.0开始, 由Spring JavaConfig项目提供的功能已经成为Spring核心框架的一部分。因此,你可以使用Java配置来代替XML配置定义外部bean 。
Spring配置至少一个(通常不止一个)由容器来管理。基于XML的元数据配置将这些bean配置为元素,并放置于元素内部。 典型的Java配置是在使用@Configuration注解过的类中,在它的方法上使用@Bean注解。
这些bean定义会对应到构成应用程序的实际对象。通常你会定义服务层对象,数据访问对象(DAOs),表示对象(如Struts Action的实
例),基础对象(如Hibernate 的SessionFactories,JMS Queues)。通常不会在容器中配置细粒度的域对象,但是,因为它的创建和加载通常是
DAO和业务逻辑的任务。 但是,你可以使用Spring与AspectJ 集成独立于 IoC 容器来创建的对象。
基于XML元数据配置的基本结构
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="..." class="...">
<!-- collaborators and configuration for this bean go here -->
</bean>
<bean id="..." class="...">
<!-- collaborators and configuration for this bean go here -->
</bean>
<!-- more bean definitions go here -->
</beans>
id 属性是字符串 ,用来识别唯一的bean定义。
class 属性定义了bean的类型,使用全类名。