ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
正如上节图1.2-1所示,通过编写配置元数据来告诉容器如何实例化、配置以及装配你应用中的 Bean。它通常编写在 XML 文件中,这也是本章介绍 Spring IOC 容器的关键概念和特性时所采用的配置方式。 > XML 不是配置元素的唯一方式,容器本身是与配置文件完全分离的,大多数开发者会选择[基于Java的配置](1.12.基于Java的容器配置.md)方式来开发应用。 更多形式的配置元数据编写方式请参见: [基于注解的配置](1.9.基于注解的容器配置.md):Spring 2.5版本加入了基于注解的配置元数据。 [基于Java的配置](1.12.基于Java的容器配置.md):从 Spring 3.0开始,由Spring JavaConfig 项目的很多特性已成为 Spring框架的核心部分。因此,你可以通过基于Java 的配置代替 XML在应用外部定义 Bean。要使用这些新特性,请参见`@Configuration`, `@Bean`, `@Import `以及 `@DependsOn`等注解。 &emsp; Spring 的配置通常由容器所管理的多个Bean 的定义组成。基于XML 的配置由`<bean/>`标签表示,并放置顶层`<beans/>`标签内。基于Java的配置方式通常由`@Bean`注解的方法表示,并且方法存在被`@Configuration`注解的类中。 &emsp; 这些Bean的定义对应于实际应用中的对象。通常你会定义服务层对象、数据访问对象(DAO)、表现层对象,比如Struts 中的`Action`、基础设施对象,比如 Hibernate中的`SessionFactories`、JMS `Queues`等等。通常不会在容器中定义细粒度的领域对象,因为领域对象的创建和加载是数据访问对象和业务逻辑的职责。无论如何,你可以通过Spring集成的ApectJ来配置非容器创建的对象。详情参见[5.8.1.在 Spring 中使用 AspectJ 注入领域对象](5.8.1.在Spring中使用AspectJ注入领域对象.md)。 &emsp; 下面的例子展示了基于 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="..."> <!-- 这里编写此Bean所依赖的其他 Bean的配置 --> </bean> <bean id="..." class="..."> <!-- 这里编写此Bean所依赖的其他 Bean的配置 --> </bean> <!-- 这里编写更多 Bean 的定义--> </beans> ~~~ > 1. `id`属性的类型为字符串,它用来唯一标识一个 Bean。 > 2. `class`属性用类的完全限定名来表示Bean的类型。 `id`属性的值表示被其它对象引用的标识,在这个示例中没有展示对象的依赖。有关信息请参见[1.4.依赖](1.4.依赖.md)。