解决Spring mvc + JDK17@Resource无法使用的情况

问题描述

我在使用jdk17进行Spring mvc开发时发现 @Resource用不了了。

原因

因为JDK版本升级的改动,在Jdk9~17环境下,搭建Springboot项目,会出现原有@Resource(javax.annotation.Resource)不存在的问题,导致项目从Jdk8迁移到高版本时遇到的问题

从Jdk9开始,JavaEE从Jdk中分离,jdk就移除掉了javax.annotation.jar包的默认集成,从而导致版本不兼容。所以一旦spring项目从JDK8升到高版本,都会出现javax.annotation.Resource无法引用报红。

java EE 即 java Enterprise Edition,企业级应用,目标是制定一系列企业级应用的标准服务。常见的 javax.servlet, javax.annotation。

Oracle 收购了创造 java 的 SUN 公司,Oracle 又不想发展 java EE 了,就把 java EE 交给 Eclipse 社区了,但是又因为不知名的原因,禁止社区使用 javax 这个名字。所以,javax.servlet 就变成了 jakarta.servlet, jakarta.annotation。api无法向前兼容。

java ee 的最后一个版本也是 8,以后就再也没有 java ee 的新版本

解决方案

方案一:手动导入javax.annotation包

去maven仓库搜索:

Javax Annotation API

导入对应的依赖即可:

复制代码
<dependency>
    <groupId>javax.annotation</groupId>
    <artifactId>javax.annotation-api</artifactId>
    <version>1.3.2</version>
</dependency>

方案二:

将高版本的jdk降为JDK1.8

相关推荐
z落落14 小时前
C# 静态成员 vs 非静态成员(调用规则+内存特点)+只读和常量 const常量 / readonly / static readonly 三者终极区别
java·开发语言·c#
java1234_小锋14 小时前
LangChain4j 开发Java Agent智能体- 整合SpringBoot4
java·开发语言·langchain4j
basketball61614 小时前
C++进阶:3. unique_ptr 现代C++内存管理的基石
java·jvm·c++
zzqssliu15 小时前
跨境代购系统的物流和通知模块重构思考:从设计模式到生产落地
java·设计模式·重构
appearappear15 小时前
一句sql 根据明细数据状态,精确更新一个主单主状态
java
许彰午15 小时前
04_Java数组操作全解
java·开发语言·python
AIGS00115 小时前
生产运营三大瓶颈,工业AI怎么破局?
java·人工智能·人工智能ai大模型应用
码不停蹄的玄黓15 小时前
Java 线程池 execute() 和 submit() 对比
java·开发语言
方也_arkling15 小时前
【Java-Day19】集合1(Collect单列集合)
java·开发语言
方也_arkling15 小时前
【Java-Day19】集合3 List中常见的方法和5种遍历方式
java·开发语言