You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用注解实现Bean生命周期时<context:annotation-config/>标签报错及注解失效问题

解决Spring注解式Bean生命周期的两个问题:context:annotation-config/报错与@PreConstruct/@PreDestroy不生效

一、搞定context:annotation-config/标签报错

  • 先确认XML头部的context命名空间配置是否完整,缺了这个肯定报错:
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
                               http://www.springframework.org/schema/beans/spring-beans.xsd
                               http://www.springframework.org/schema/context
                               http://www.springframework.org/schema/context/spring-context.xsd">
    
  • 确保Spring版本和schema版本匹配,要么在schemaLocation里指定对应版本(比如http://www.springframework.org/schema/context/spring-context-5.3.xsd),要么直接省略版本号让Spring自动适配。
  • 检查项目依赖里有没有spring-context模块,这是context命名空间的核心依赖,没加的话直接补进去。

二、让@PreConstruct/@PreDestroy生效

  • 依赖要对应Spring版本:如果用的是Spring 5.3及以后,javax.annotation-api已经被淘汰了,必须换成jakarta.annotation-api(版本2.0以上):
    <!-- Maven依赖示例 -->
    <dependency>
        <groupId>jakarta.annotation</groupId>
        <artifactId>jakarta.annotation-api</artifactId>
        <version>2.1.1</version>
        <scope>provided</scope>
    </dependency>
    
    要是用的Spring 5.3以前的版本,javax.annotation-api 1.3.2是没问题的,但得确认这个依赖没被其他依赖排除掉(可以用Maven的dependency:tree命令查)。
  • 配置要到位:光加context:annotation-config/不够,如果你的Bean是用@Component这类注解注册的,必须再加<context:component-scan base-package="你的Bean所在包路径"/>——前者是处理已注册Bean的注解,后者是负责扫描并注册Bean,缺一个都不行。
  • 检查Bean的状态:如果是手动用标签注册的Bean,别开lazy-init="true",不然Bean没初始化肯定不会触发@PreConstruct;另外,容器关闭时要调用close()方法(比如ClassPathXmlApplicationContext的close()),不然@PreDestroy不会执行。
  • 注解包别导错:别导入其他框架的同名注解,要确保用的是javax.annotation.PostConstruct/javax.annotation.PreDestroy(Spring 5.3前)或者jakarta.annotation.PostConstruct/jakarta.annotation.PreDestroy(Spring 5.3后)。

内容的提问来源于stack exchange,提问作者Alyusha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 01:40:27