swagger+javax/xml/bind/DatatypeConverter+aop各种问题

news2024/11/29 0:32:08

文章目录

  • 一、No operations defined in spec!
    • 1.问题图片
    • 2.解决方法
  • 二、java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
    • 1.问题图片
    • 2.解决方法
  • 三、AOP切点不够精确问题
    • 1.问题描述
    • 2.解决方案
  • 总结

一、No operations defined in spec!

这是swagger报的错:一个接口都没有了,空空的。查了下原因是因为swagger没有找到注解标识的接口。

  • 那么就可能是路径错了
  • 或者注解没有正确使用

1.问题图片

在这里插入图片描述

2.解决方法

我的问题是这里包的路径写错了,修改为正确的路径解决。

 @Bean
    public Docket createRestApi() {

        return new Docket(DocumentationType.OAS_30)
                .enable(true)
                .securitySchemes(Collections.singletonList(HttpAuthenticationScheme.JWT_BEARER_BUILDER
//                        显示用
                        .name("JWT")
                        .build()))
                .securityContexts(Collections.singletonList(SecurityContext.builder()
                        .securityReferences(Collections.singletonList(SecurityReference.builder()
                                .scopes(new AuthorizationScope[0])
                                .reference("JWT")
                                .build()))
                        // 声明作用域
                        .operationSelector(o -> o.requestMappingPattern().matches("/.*"))
                        .build()))
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.cms.controller")) // 设置扫描路径
                .build();
    }

除了我的这个情况,还可以尝试以下方法:

  1. 检查 Swagger 规范文件:确保 Swagger 规范文件中正确定义了 API 操作,包括每个接口的路径、请求方法、参数、响应等信息。如果规范文件中确实没有定义任何操作,就会出现这个错误。

  2. 检查 Swagger 注解:在代码中使用 Swagger 注解时,确保每个接口都有正确的注解,包括 @ApiOperation、@Api、@ApiParam 等,这些注解会被 Swagger 解析生成 API 文档。

  3. 重启应用程序:有时候重新启动应用程序可以解决一些 Swagger 显示问题,尝试重启应用程序看看是否能够解决这个错误。

  4. 更新 Swagger 版本:如果以上方法都无效,考虑更新 Swagger 相关的依赖库到最新版本,有时候新版本可能修复了一些 bug 或问题。

二、java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter

1.问题图片

在这里插入图片描述

2.解决方法

这是我登录的时候出现的问题:同样的代码,jdk版本,但是一个项目报错,一个项目不报错。
我查了下解决方案:

  • 引入依赖,实践成功
implementation 'javax.xml.bind:jaxb-api:2.3.1'
  • 检查 JDK 版本:确保项目使用的 JDK 版本与相关依赖库兼容。推荐使用较旧版本的 JDK,因为较新版本的 JDK 中移除了一些 Java EE 相关的类。

  • 指定 Java EE 模块路径:如果你使用的是较新的 JDK,可以尝试通过 --add-modules java.xml.bind 参数指定 Java EE 模块路径,以使 DatatypeConverter 类可用。

  • 更新相关库:如果使用的是第三方库,尝试更新到最新版本,有时候新版本会修复此类依赖问题。

三、AOP切点不够精确问题

1.问题描述

通过AOP进行记录操作日志,因为引入了swagger,就想要直接使用controller的注解ApiOperation作为切点。
但是由于我有一些接口时服务之间相互调用的,这就导致了我aop记录日志的时候会把调用的接口以及调用子服务的接口全部都记录下来,这不是我的初衷。

2.解决方案

  • 精确切点,使用within和&&来控制条件
  • &&,必须满足两个条件
  • within,包及子包下的所有类
 // 切点
   @Pointcut("within(com.cms.controller..*) && @annotation(io.swagger.annotations.ApiOperation)")
   public void pointcut() {
   }

总结

在项目开发中,遇到 “No operations defined in spec!” 错误时,需要检查Swagger规范文件和注解是否正确定义,尝试重启应用程序或更新Swagger版本;
对于"java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter"错误,可添加相关依赖库、检查JDK版本兼容性或指定Java EE模块路径;
而针对AOP切点不够精确的问题,应当优化切点表达式、使用更具体的条件来定义切点,确保准确匹配目标方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1455894.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

turn服务器debug

turn服务器正常能连通的调用堆栈 turn_port.cc AddRequestAuthInfo check 崩溃 有问题的turn msg type是259 request type 是3 用不了的turn 服务器turnmessage type 275

pytorch tensor合并与分割

目录 1. cat2. stack3. split4. chunk 1. cat torch.cat(tensors, dim0, *, outNone) → Tensor 在指定维度上,连接给定tensor序列或empty,除连接的dimension外,所有得的ensor必须有相同的shape 参数: tensors-具有相同类型的ten…

Visual Studio+C#实现信道与信息率失真函数

1. 要求 设计一款信道与信息率失真函数计算系统,要求如下: 系统能够通过输入的转移概率矩阵计算对称以及非对称离散无记忆信道的信道容量系统能够通过输入的概率分布以及失真矩阵来计算与信息率失真函数有关的相关参数,例如Dmin&#xff0c…

【教程】详解相机模型与坐标转换

转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] 由于复制过来,如果有格式问题,推荐大家直接去我原网站上查看: 相机模型与坐标转换 - 生活大爆炸 目录 经纬度坐标系 转 地球直角坐标系大地直角坐标系 转 经纬度坐标系地理坐标…

⭐北邮复试刷题589. N 叉树的前序遍历__DFS (力扣每日一题)

589. N 叉树的前序遍历 给定一个 n 叉树的根节点 root ,返回 其节点值的 前序遍历 。 n 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例)。 示例 1: 输入:root [1,null,…

【明道云】如何实现循环处理

【背景】 发现明道云工作流中并没有直接的循环逻辑模块,那么如何实现循环呢? 【方案】 通过主流程获取多条数据,搭配子流程来实现遍历循环效果。子流程中可以直接感应获取单行数据。 如果直接在主流程中通过直接获取方式获取多条数据&…

Linux 进程详解

目录 一、进程创建 二、进程API 1. 进程创建 fork() 2. 等待 wait() 3.执行 exec() 3.1 execlp函数 3.2 execl函数 三、其他API 一、进程创建 上文讲述了进程的概念,现在大家对于进程的定义已经有所了解了,本文主要介绍一下进程的基本信息&a…

Java基于微信小程序的乐室预约小程序,附源码

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

15.隐式转换函数的封装

目录 概述实践代码测试 结束 概述 隐式转换函数 类似 java 中的切面编程,对原有类功能做增加。 实践 代码 封装代码如下 package com.fun.scala.demoimport java.io.File/*** 类似java切面的东东*/ object ImplicitAspect {implicit def man2SuperMan(man: Man):…

前端新手Vue3+Vite+Ts+Pinia+Sass项目指北系列文章 —— 第十二章 常用工具函数 (Utils配置)

前言 在项目开发中,我们经常会使用一些工具函数,也经常会用到例如loadsh等工具库,但是这些工具库的体积往往比较大,如果项目本身已经引入了这些工具库,那么我们就没有必要再引入一次,所以我们需要自己封装…

计算机网络基础入门指南

文章目录 网络分层模型OSI七层模型及其作用TCP/IP四层模型及作用为什么网络需要分层? 常见的网络协议应用层常见的协议传输层常见的协议网络层常见协议 从输入URL到页面展示的过程HTTP常见的状态码HTTP与HTTPS的区别HTTP是不保存状态的协议,如何保存用户…

DoRA(权重分解低秩适应):一种新颖的模型微调方法

来自:小互 DoRA(权重分解低秩适应):一种新颖的模型微调方法 DoRA在LoRA的基础上进一步发展,通过将预训练权重分解为“幅度”和“方向”两个部分进行微调。 这种权重分解方法允许DoRA更精细地控制模型的学习过程&…

腾讯云助力酒店IT系统上云,实现出海业务的双重优势

潮起潮涌,随着时代浪潮的翻涌,生活处处可见是巨大的变化,衣食住行都有了更多更大的需求,出门旅游观赏当地风景品尝特色美食的前提是要住好,只有休息好了才有更多的精力去游玩。酒店系统的升级上云让登记变得更加便捷&a…

MAC电脑系统清理空间免费版软件CleanMyMac X2024

大家好,我是那个总是被苹果电脑“内存已满”提示搞得焦头烂额的专业博主。如果你也像我一样,在使用Mac时经常遭遇卡顿、慢吞吞的情况,那么今天的Mac清理空间妙招分享绝对适合你! CleanMyMac X全新版下载如下: https://wm.makedi…

JVS智能BI的ETL数据集实践:数据自动化分析的秘诀

数据集是JVS-智能BI中承载数据、使用数据、管理数据的基础,同样也是构建数据分析的基础。可以通俗地将其理解为数据库中的普通的表,它来源于智能的ETL数据加工工具,可以将数据集进行分析图表、统计报表、数字大屏、数据服务等制作。 数据集管…

C++中对变量进行初始化的3种方法

1.用"":copy initialization,这种初始化形式是从C继承的。此种方式(拷贝初始化)的初始化在现代C中已不再受欢迎,因为对于某些复杂类型来说,此种方式初始化的效率低于其它形式的初始化。 每当隐式拷贝或转换值时&a…

【c语言】c语言转义字符详解

🎈个人主页:豌豆射手^ 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:c语言 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步&…

如何将OpenAI Sora生成的普通AI视频转化为Vision Pro的空间视频,沉浸式体验

【基于AI的Vision Pro空间视频】工作流:这个工作流程用于将2D视频转换为适用于 Vision Pro的Spatial视频: 1、使用Deep3D将2D视频转换为3D SBS: 使用Deep3D工具将2D视频转换为3D SBS格式: 转换例子:Prediction– lucataco/deep3d – Replicatehttps://replicate.com/…

文件上传之大文件分块上传之断点续传操作

断点续传概念: 断点续传是一种网络的传输机制,用于在文件传输过程中出现中断或错误时,能够恢复传输而不必重新开始,它解决了网络不稳定连续中断或大文件传输时时间过长等问题。提高了文件传输时可靠和效率性。 断点续传需求&…

浅谈js事件机制

事件是什么?事件模型? 原始事件模型(DOM0级) HTML代码中指定属性值:在js代码中指定属性值:优点:缺点: IE 事件模型DOM2事件模型 对事件循环的理解 宏任务(Macrotasks&…