解决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

相关推荐
liuyang-neu几秒前
力扣 16.最接近的三数之和
java·数据结构·算法·leetcode
艾伦~耶格尔2 分钟前
Java API 之集合框架进阶
java·开发语言·学习
韩子谦3 分钟前
Java迭代器Iterator和Iterable有什么区别?
java·windows·python
Satan7125 分钟前
【Java】全面理解Java8特性
java·开发语言
至简行远6 分钟前
路由器接口配置DHCP实验简述
java·服务器·网络·数据结构·python·算法·智能路由器
c1tenj27 分钟前
SpringCloud Feign 以及 一个标准的微服务的制作
java·spring cloud·微服务
小郝同学(恩师白云)21 分钟前
SpringMVC后续4
java·服务器·前端
March€26 分钟前
基于mockito做单元测试
java·单元测试·log4j
秋月的私语33 分钟前
c# 线程等待变量的值符合条件
java·jvm·c#
Stringzhua34 分钟前
SpringBean的生命周期
java·spring