spring-framework-reference(5.1.1.RELEASE)中文版——Core部分 (2)

Java-based configuration: 从Spring 3.0开始,Spring JavaConfig项目提供的许多特性成为核心Spring框架的一部分。因此,您可以通过使用Java而不是XML文件来定义应用程序类外部的bean。要使用这些新特性,请参阅@Configuration、@Bean、@Import和@DependsOn注释。

Spring配置包含至少一个bean定义,通常是容器必须管理的多个bean定义。基于xml的配置元数据将这些bean配置为顶层元素中的元素。基于xml的配置元数据将这些bean配置为顶层

这些bean定义对应于组成应用程序的实际对象。通常,您可以定义服务层对象、数据访问对象(DAOs)、表示对象(如Struts动作实例)、基础设施对象(如Hibernate SessionFactories)、JMS队列等。通常,在容器中不配置细粒度的域对象,因为创建和加载域对象通常是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 "> <bean> <!-- collaborators and configuration for this bean go here --> </bean> <bean> <!-- collaborators and configuration for this bean go here --> </bean> <!-- more bean definitions go here --> </beans>

其中:

id:i是标识单个bean定义的字符串。

class:定义bean的类型并使用完全限定的classname。

id属性的值引用协作对象。本例中没有显示引用协作对象的XML。有关更多信息,请参见依赖关系。

Instantiating a Container

提供给ApplicationContext构造函数的位置路径或路径是资源字符串,允许容器装载来自各种外部资源(如本地文件系统、Java类路径等)的配置元数据。

ApplicationContext context = new ClassPathXmlApplicationContext("services.xml", "daos.xml");

注意:在了解了Spring的IoC容器之后,您可能想了解更多关于Spring的资源抽象(如参考资料中所述)的内容,它提供了从URI语法中定义的位置读取InputStream的方便机制。特别是,资源路径用于构造应用程序上下文,正如在应用程序上下文和资源路径中描述的那样。

下面的示例显示了服务层对象(service .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 "> <!-- services --> <bean> <property ref="accountDao"/> <property ref="itemDao"/> <!-- additional collaborators and configuration for this bean go here --> </bean> <!-- more bean definitions for services go here --> </beans>

下面的示例显示了数据访问对象daos.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 "> <bean> <!-- additional collaborators and configuration for this bean go here --> </bean> <bean> <!-- additional collaborators and configuration for this bean go here --> </bean> <!-- more bean definitions for data access objects go here --> </beans>

在前面的示例中,服务层包含PetStoreServiceImpl类和JpaAccountDao和JpaItemDao类型的两个数据访问对象(基于JPA对象关系映射标准)。

属性名称元素引用JavaBean属性的名称,ref元素引用另一个bean定义的名称。id和ref元素之间的链接表示协作对象之间的依赖关系。有关配置对象依赖项的详细信息,请参阅依赖项。

Composing XML-based Configuration Metadata

让bean定义跨越多个XML文件可能很有用。通常,每个XML配置文件都代表体系结构中的逻辑层或模块。

您可以使用Application context构造函数从所有这些XML片段加载bean定义。此构造函数接受多个资源位置,如前一节所示。或者,使用一个或多个元素来从另一个或多个文件加载bean定义。下面的例子展示了如何做到这一点:

<beans> <import resource="services.xml"/> <import resource="resources/messageSource.xml"/> <import resource="/resources/themeSource.xml"/> <bean/> <bean/> </beans>

在前面的示例中,外部bean定义从三个文件加载:service.xml,messageSource.xml和themeSource.xml。

所有位置路径都相对于执行导入操作的定义文件,因此是service.xml必须与执行导入的文件位于相同的目录或classpath位置,而messageSource.xml和themeSource.xml必须位于导入文件位置下方的resources位置。如您所见,前导斜杠被忽略。但是,考虑到这些路径是相对的,最好不要使用斜杠。根据Spring模式,导入的文件的内容,包括顶层元素,必须是有效的XML bean定义。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzdjpw.html