title: Swagger-Springfox + WebFlux + JavaX validation (JSR 303) support
body: <p>I am trying to implement Swagger for documentation, so that it picks both JSR 303 validation annotations and Spring Webflux based classes. </p>
  
  <p>In Spring Boot project, I am currently using:  </p>
  
  <ol>
  <li>Spring Webflux framework for some classes </li>
  <li>JSR 303 annotations on domain classes for Bean Validations and Constraints </li>
  <li>Swagger integration with Spring Fox framework for generating OpenAPI documentation.</li>
  </ol>
  
  <p>In build.gradle, following dependencies are used and I am able to make Spring Webflux + SpringFox work but only JSR 303 is giving issues:</p>
  
  <pre><code>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'
  </code></pre>
  
  <hr>
  
  <p>Here is the issue :</p>
  
  <p>When below dependency is added to achieve <em>"Spring Webflux + SpringFox + JSR 303"</em>,</p>
  
  <pre><code>**'io.springfox:springfox-bean-validators:2.9.2'**
  </code></pre>
  
  <p>I am getting the following error,</p>
  
  <pre><code>[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]
  </code></pre>
  
  <p>Several blogs say that,SpringBoot version 2x doesn't support JSR 303. I am not sure but I tried to see it doesn't work. </p>
  
  <p>Please advise.</p>
  
  <p>Also, If JSR 303 is not supported currently, what other Validation annotations can be used apart from JSR 303 ? 
  I don't want to use Swagger core annotations, only because it is messing up code readability.</p>