7.2.1 配置元数据
7.2.1 配置元数据
如上图所示,Spring的IoC容器使用某种形式的配置元数据,该配置元数据描绘了作为一个程序开发者在程序中如何告诉Spring容器去实例化、配置和组装对象。
传统上,配置元数据以简单而直观的XML格式展现,这也是本章传达Spring IoC容器的关键概念和特性使用最多的形式。
基于XML的元数据不是配置元数据唯一允许的形式。Spring IoC容器本身与实际编写配置元数据的格式是完全解耦的。现在,许多Spring应用的开发者选择基于Java的配置。
更多有关在Spring容器中使用配置元数据的其他形式的信息,请见:
- 基于注解的配置:Spring 2.5引入了对基于注解的配置元数据的支持。
- 基于Java的配置:从Spring 3.0开始,Spring的JavaConfig项目提供的许多功能成为了Spring Framework核心的一部分,因此,您能够通过使用Java而不是XML文件在应用中定义外部bean。要使用这些新功能,请参阅
@Configuration
、@Bean
、@Import
和@DependsOn
注解。
Spring的配置由至少一个且通常多于一个必须被容器管理的bean组成。基于XML的配置元数据在顶层的<beans/>
元素中用<bean/>
元素配置这些bean。基于Java的配置通常是在一个@Configuration
注解的类中使用@Bean
注解方法。
这些bean定义与构成应用程序的实际对象相对应。通常,你可以定义service层对象、数据访问层对象(DAO)、表示对象(比如Struts的Action
实例)、基础结构(infrastructure)对象(比如Hibernate的SessionFactory
、JMS的Queue
)等等。通常不在容器中配置细粒度的域对象,因为那一般是DAO的职责,而且应该由业务逻辑来创建和加载域对象。不过,可以使用Spring与AspectJ的集成来配置在IoC容器控制外已经创建的对象。请参阅在Spring中使用AspectJ向域对象注入依赖。
下面示例展示了基于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 class="...">
<!-- collaborators and configuration for this bean go here -->
</bean>
<bean class="...">
<!-- collaborators and configuration for this bean go here -->
</bean>
<!-- more bean definitions go here -->
</beans>
id
属性是一个用于识别单一bean定义的字符串。class
属性定义bean的类型,使用完整的类名。id属性的值指向协作对象。引用协作对象的XML片段未在本例中展示,更多信息请参阅依赖。