Spring IoC容器使用了一种方式配置元数据;这些元数据配置要表达:你如何以一个开发者告诉 Spring容器去实例化、配置和在应用中组合对象。
注:基于XML的元数据不是唯一允许配置元数据的形式。Spring
IoC 容器本身与配置元数据的方式中是完全接偶的。目前,很多开发者在自己的应用中都选择基于JAVA的配置。
配置元数据通常是提供一个简单而直观的XML格式
Spring配置通常包括至少一个和多个 bean 的定义,这些bean必须由容器管理。基于XML配置元数据需要把bean配置在<bean></bean>节点中。JAVA具有代表性的配置是:在一个@Configuration
类里面使用 @bean 注入方法。
这些bean 的定义要与应用中实际实例化的对象一致。通常是,定义服务层对象,操作数据的对象(DAOs),就像Struts 的Action实例一样描述对象,好比Hibernate
的 SessionFactories 基础类,JMS Queues,等。通常bean不会在容器中配置细粒度的域对象,因为他通常是用来负责DAO和业务逻辑的创建,以及域对象的加载。然而,你也可以用Spring 的集成和AspectJ
来配置对象,这些对象必须是在IoC容器的控制以外创建的。可以参考:使用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 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的类型,并且是使用完整的类名。id属性的值是其协作对象。这个例子没有展示XML指定协作对象。想了解更多可看“依赖性”章节。