当前位置: 首页 > 知识库问答 >
问题:

Swagger-Springfox+WebFlux+JavaX验证(JSR303)支持

裴英锐
2023-03-14
    null
springBootVersion = '2.0.2.RELEASE'

//JavaX-validation    
'javax.validation:validation-api:2.0.0.Final',    
'javax.el:javax.el-api:3.0.0',    
'org.glassfish.web:javax.el:2.2.6'

//SpringFox-Swagger    
'io.springfox:springfox-swagger2:2.9.2',    
'io.springfox:springfox-spring-webflux:3.0.0-SNAPSHOT',    
'io.github.swagger2markup:swagger2markup-gradle-plugin:1.3.3'

问题是:

当添加以下依赖项以实现“Spring Webflux+SpringFox+JSR303”时,

**'io.springfox:springfox-bean-validators:2.9.2'**

我得到以下错误,

[WARN ] 2018-11-01 10:16:50.535 [main] SpringApplication - Unable to close ApplicationContext    
java.lang.IllegalStateException: Failed to introspect Class 
             springfox.documentation.swagger2.configuration.Swagger2DocumentationConfiguration] from ClassLoader [sun.misc.Launcher$AppClassLoader@764c12b6]  

    at 
     org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:659) ~[spring-core-5.0.6.RELEASE.jar:5.0.6.RELEASE]    
         at 
     org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:556 ) ~[spring-core-5.0.6.RELEASE.jar:5.0.6.RELEASE]     
        at 
     org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.ge tTypeForFactoryMethod(AbstractAutowireCapableBeanFactory.java:724) ~[spring- beans-5.0.6.RELEASE.jar:5.0.6.RELEASE]    
         at 
     org.springframework.boot.SpringApplication.handleExitCode(SpringApplication.java:861) ~[spring-boot-2.0.2.RELEASE.jar:2.0.2.RELEASE]    
        at 
     org.springframework.boot.SpringApplication.handleRunFailure(SpringApplication.java:810) [spring-boot-2.0.2.RELEASE.jar:2.0.2.RELEASE]    
        at 
     org.springframework.boot.SpringApplication.run(SpringApplication.java:1255) [spring-boot-2.0.2.RELEASE.jar:2.0.2.RELEASE]     
     Caused by: java.lang.NoClassDefFoundError: 
     org/springframework/web/servlet/HandlerMapping
        at java.lang.Class.getDeclaredMethods0(Native Method) ~[?:1.8.0_92]
        at java.lang.Class.privateGetDeclaredMethods(Unknown Source) ~[?:1.8.0_92]
        at java.lang.Class.getDeclaredMethods(Unknown Source) ~[?:1.8.0_92]
        at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:641) ~[spring-core-5.0.6.RELEASE.jar:5.0.6.RELEASE]
        ... 20 more            
    Caused by: java.lang.ClassNotFoundException: org.springframework.web.servlet.HandlerMapping
        at java.net.URLClassLoader.findClass(Unknown Source) ~[?:1.8.0_92]
        at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_92]

另外,如果当前不支持JSR303,那么除了JSR303之外,还可以使用哪些其他验证注释?我不想使用Swagger核心注释,只是因为它会扰乱代码的可读性。

共有1个答案

富凯旋
2023-03-14

在pom.xml中添加:

    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>3.0.0</version>
        <scope>compile</compile>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>3.0.0</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-spring-webflux</artifactId>
        <version>3.0.0</version>
    </dependency>

并使用注释:

@EnableSwagger2

在你昂首阔步的配置中。

 类似资料:
  • 我按照这个教程https://spring framework . guru/spring-boot-restful-API-documentation-with-swagger-2/生成了一个swagger文档。它可以工作,但是当我试图在bean中添加一些验证时,我在文档中找不到信息: 带有验证注释的我的实体: 这里,https://github.com/springfox/springfox/

  • 我试图使用swagger来记录我的Restapi,并且取得了一些成功,但是在受限资源参数方面,我遇到了一堵墙。我正在使用JBoss RESTEasy与Hibernate验证器提供程序和Jackson 2.x注释的POJO。我遇到的问题是,当遇到@DecimalMin/@DecimalMax注释时,我得到一个 似乎swagger正在尝试使用较新版本的javax.validation.constrai

  • 有没有办法在springfox swagger(2.7.0)中暴露遗传/多态性?我知道昂首阔步规范支持所有的。springfox支持这个吗?下面是示例域模型。 若控制者归还动物,那个么《大摇大摆》合同不会暴露猫或狗。它只返回带有属性的动物。

  • 我使用的是Swagger(1.5.8),我想让我的定义检测DTO上的JSR-303注释,这样我就可以记录API的验证约束。 我希望注释(如本例)会显示关于最小值(44)的一些信息,但它不会。 由此产生的是: Swagger已经关闭了该功能的拉取请求,但我不清楚它在Swagger定义中的位置/方式。 我希望能够做这样的事情: 配置Swagger模块/插件以启用和等功能的首选方法是什么,以便他们检查我

  • 现在我发现这个版本不支持java 7,但是我需要它用于一个遗留项目。从发行说明来看,很明显2.9.0将是支持java 7的最后一个版本。 我的问题是 - 如果我只有基本的swaggerconfig,如果我向下迁移到2.9.0,我需要做什么改变吗? 更新1 -版本2.9.1不支持Java 7。而在2.9.0版本上,它给出了“无法推断基础url”的错误。 我刚刚将版本号从2.9.2更改为2.9.0。在

  • 从2.7.0开始,SpringFox Swagger不支持继承: https://github.com/springfox/springfox/issues/1983 我有一个应用程序,它依赖于swagger支持继承这一事实,但仍然需要将库更新到2.8.0版本。 真的有可能以某种方式(甚至是肮脏的方式)为继承提供向后兼容性吗? 真的非常感谢任何帮助,谢谢