spring配置文件XML怎么写 spring bean配置详解

Spring XML配置通过bean标签声明并管理Java对象,支持属性注入、依赖引用、集合配置、作用域控制(如singleton/prototype)、懒加载及初始化/销毁方法,需遵循XSD规范并声明命名空间。

Spring 的 XML 配置文件本质是通过 bean 标签声明 Java 对象(即 Spring 管理的组件),并由 Spring 容器负责创建、装配和生命周期管理。虽然现在主流用 Java Config 或注解(@Configuration@Bean@Component等),但理解 XML 配置对阅读老项目、调试原理或特定场景(如多模块 XML 拆分)仍有实际价值。

基础 bean 声明与属性注入

最简形式只需指定 id(唯一标识)和 class(全限定类名):

Spring 会调用该类无参构造器创建实例。若需设属性值,可用 property 子标签:


  
  

这等价于 new 出对象后调用 setTimeOut(3000)setRetryCount(3)。注意:name 必须匹配 JavaBean 的 setter 方法名(去掉 set,首字母小写),且对应字段要有 public setter。

引用其他 bean(依赖注入)

当一个 bean 需要另一个 bean 作为成员变量时,用 ref 属性指向目标 bean 的 id


  

Spring 在初始化 orderService 时,自动将已创建好的 userService 实例注入其 setUserService() 方法中。也可用 实现构造器注入,更利于不可变性和测试。

集合类型与复杂属性配置

XML 支持 list、map、set、props 等结构。例如注入字符串列表:


  
    
      sendEmail
      notifySMS
    
  

注入 Map(key 为 String,value 为 bean 引用):


  
    
    
  

注意:嵌套结构必须放在 内部,不能直接写在 下。

作用域、懒加载与初始化控制

默认 scope 是 singleton(单例,整个容器共享一个实例)。设为 prototype 则每次 getBean() 都新建:

启用懒加载(lazy-init),让 bean 在首次被引用时才创建,而非容器启动时:

指定初始化/销毁方法(对应 @PostConstruct/@PreDestroy):


  

Spring 会在 bean 创建后调用 init(),关闭容器前调用 close()

不复杂但容易忽略:XML 文件需遵循 Spring XSD 规范,开头要有命名空间声明,如:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">