Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Spring 5 support #1773

Closed
pabl0rg opened this issue Apr 16, 2017 · 132 comments
Closed

Spring 5 support #1773

pabl0rg opened this issue Apr 16, 2017 · 132 comments

Comments

@pabl0rg
Copy link

pabl0rg commented Apr 16, 2017

Or are there plans to support it?

@dilipkrish
Copy link
Member

There definite is a plan to support it. It will however have to wait till Open API support is completed.

@oleg-savko
Copy link

Spring 5 was released. Do u have any progress?

@dilipkrish
Copy link
Member

@oleg-savko Unfortunately now. Would love some help on this one. Anyone wanting to help with that.

@amitsaluja
Copy link

@dilipkrish - Would like to contribute to #1773,can you help me with getting started guide.

@dilipkrish
Copy link
Member

@amitsaluja frankly I haven't tried it andI don't know what it will take. I suspect certain functionality is not working or is broken.

  • Start a project with spring 5
  • See what is broken
  • Come up with a solution and propose a pull request
  • If it looks good and has tests to accompany it, i'll pull it in.

Thank you for wanting to help!

@xBATx
Copy link

xBATx commented Oct 5, 2017

Hi @dilipkrish
I looked into it and I found out that there is a lot of job to do.
In webflux, there is no more package web.servlet but it changed to web.reactive which requires more changes than expected. If you want to support the older versions of Spring after release, you probably need to create new modules for webflux where new things will be done.
At the moment, there is 2 modules in the project which are dependent on springframework.web.servlet and directly use a lot of classes from it. Spring 5 has moved staff from there to org.springframework.web.reactive where also some structure and implementation of classes was changed.
Maybe it will be good to figure out how new modules would be organized in the future so the project will be easily maitained. What do you suggest?

@MinosPong
Copy link
Contributor

Hi @dilipkrish, I think the WebFlux support will be a very important milestone for springfox.
Follow with the finding from @xBATx , I would find there are 2 major update on springfox need your input.

  1. Dependency on "org.springframework.web.servlet.mvc" in RequestHandler.
  2. Module layout for webflex support

For (1), currently, RequestHandler depends on class NameValueExpression, PatternsRequestCondition and RequestMappingInfo is in webmvc package. They have the counter part in webflux "org.springframework.web.reactive" (see the link). Shall we consider.

  • define a interface in springfox and adapt the webmvc and webflux class, or
  • adapter the weblux model to webmvc model and not changing RequestHandler.
    For (2), my suggestion is to divide the model springfox-spring-web into springfox-spring-web-common, springfox-spring-webmvc, and springfox-spring-webflux for common class, webmvc and webflux support.

@dilipkrish
Copy link
Member

@MinosPong thanks for your detailed analysis. I would agree with your findings. I really don't have the bandwidth to work on this right now and could use some help.

@JackFish
Copy link

JackFish commented Nov 9, 2017

swagger+netty server+webflux with kotlin is so cool.

@dilipkrish
Copy link
Member

@JackFish baby steps :)

@deblockt
Copy link
Contributor

deblockt commented Jan 17, 2018

Hello, I need this feature on my project.
I have rewrite some code of springfox to work exclusively with spring-webflux, this take 4 hours to do.
This work fine, there are two many dependency to broke :

  • spring webmvc
  • servlet-api

Now, I will try to rewrite my code to work with springmvc and spring-webflux in parallel. My big issue is that springfox-core depend of spring-webmvc, I think broke this dependency can broke some dependent projects.

Has someone already start a fork of springfox to work on that?

@deblockt
Copy link
Contributor

I have a verry first working swagger lib on this fork : https://github.com/deblockt/springfox

Is there anyone to work with me on this?

@goodlifeinc
Copy link

Hi, I checked out your project and managed to adopt it in one of my projects, currently migrated to spring-boot-2.0.0.M7.

Few things I noticed right away though,

  1. I used to have redirect to swagger-ui.html from /, now it says that this redirect cannot be resolved to view, which probably means its not registered since webflux isnt using webmvc.
  2. The Docket is always sending the requests to localhost:8080 even though the app is working on different port, so I will check this out. Managed to define .host() in my Docket to overcome this for now.
  3. I have custom Securities set for different Dockets and even though I authenticate succesfully in swagger the Headers are not being sent, but I think that this is problem of Swagger 2.8 not this project explicitly. (to note I was previously using 2.7, never migrated to 2.8)

@dilipkrish
Copy link
Member

@deblockt that is really cool!! Would love to help and answer any questions you might have. Let me know if you'd like access to this repo work on it.

@anagypitech
Copy link

anagypitech commented Feb 6, 2018

@deblockt nice work!
Your changes are working very well with webflux. I hope that it will be in a released version soon.

@dilipkrish
Copy link
Member

@deblockt Would you like to send a PR to pull your changes in.

@j-ibarra
Copy link

j-ibarra commented May 8, 2019

@remesh22 te config works, but no maps the class Mono or Flux
Captura de pantalla de 2019-05-08 17-23-39

@sdeleuze
Copy link

sdeleuze commented May 9, 2019

For those who need Spring Framework 5 + OpenAPI support, be aware there is now also a community driven support for OpenAPI built on top of Spring Rest docs, see https://github.com/ePages-de/restdocs-api-spec.

At the same time, I hope SpringFox 3.0 with Spring Framework 5 support will be out soon.

@sree1995
Copy link

sree1995 commented May 16, 2019

#1773 (comment)

@mikezerosix: I am using spring boot 2 and springfox 3 snapshot
Even I am getting 'com.fasterxml.classmate.TypeResolver' error. "Field typeResolver in ...SwaggerConfiguration required a bean of type 'com.fasterxml.classmate.TypeResolver' that could not be found"

Were you able to resolve this? Anyone else has solution for this?

@yuhua-shi
Copy link

@j-ibarra same question with you now . have you already fixed it?

@burgerj03
Copy link

Do you have an idea/plan when the 3.0.0 will be released on Maven Central?

@j-ibarra
Copy link

@bestshiyuhua, no!

@maccamlc
Copy link

maccamlc commented Jun 20, 2019

@j-ibarra @bestshiyuhua not sure if this is the same problem, but I have the content model now showing, not the Mono/Flux {} problem, by configuring genericModelSubstitutes, like so

    @Bean
    internal fun api(): Docket =
        Docket(SWAGGER_2)
            .genericModelSubstitutes(Mono::class.java, Flux::class.java, Publisher::class.java)
            .select()
            ...
            .build()

Hoping this gets released officially soon

@j-ibarra
Copy link

@maccamlc awesome, thank very much, this works for me
Captura de pantalla de 2019-06-21 00-15-07

Captura de pantalla de 2019-06-21 00-16-33

@bestshiyuhua

@pehkay
Copy link

pehkay commented Jun 26, 2019

Can you share your project?

@j-ibarra
Copy link

j-ibarra commented Jun 26, 2019

@pehkay sure, https://github.com/J-Ibarra/swagger-webflux-demo

@Sam-Kruglov
Copy link

Sam-Kruglov commented Jul 5, 2019

tried with 3.0.0-SNAPSHOT, got this when accessing /api-docs:

ERROR --- [dispatcherServlet]            : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.IllegalStateException: No primary or default constructor found for interface org.springframework.http.server.reactive.ServerHttpRequest] with root cause

java.lang.NoSuchMethodException: org.springframework.http.server.reactive.ServerHttpRequest.<init>()
	at java.lang.Class.getConstructor0(Class.java:3082) ~[?:1.8.0_192]
	at java.lang.Class.getDeclaredConstructor(Class.java:2178) ~[?:1.8.0_192]
	at org.springframework.web.method.annotation.ModelAttributeMethodProcessor.createAttribute(ModelAttributeMethodProcessor.java:216) ~[spring-web-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.springframework.web.servlet.mvc.method.annotation.ServletModelAttributeMethodProcessor.createAttribute(ServletModelAttributeMethodProcessor.java:84) ~[spring-webmvc-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.springframework.web.method.annotation.ModelAttributeMethodProcessor.resolveArgument(ModelAttributeMethodProcessor.java:139) ~[spring-web-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:126) ~[spring-web-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:167) ~[spring-web-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:134) ~[spring-web-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) ~[spring-webmvc-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:892) ~[spring-webmvc-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797) ~[spring-webmvc-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1039) ~[spring-webmvc-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942) ~[spring-webmvc-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005) ~[spring-webmvc-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:897) ~[spring-webmvc-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:634) ~[tomcat-embed-core-9.0.21.jar:9.0.21]
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882) ~[spring-webmvc-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) ~[tomcat-embed-core-9.0.21.jar:9.0.21]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) ~[tomcat-embed-core-9.0.21.jar:9.0.21]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.21.jar:9.0.21]
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.21.jar:9.0.21]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.21.jar:9.0.21]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.21.jar:9.0.21]
	at org.springframework.boot.actuate.web.trace.servlet.HttpTraceFilter.doFilterInternal(HttpTraceFilter.java:88) ~[spring-boot-actuator-2.1.6.RELEASE.jar:2.1.6.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:109) ~[spring-web-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.21.jar:9.0.21]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.21.jar:9.0.21]
	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) ~[spring-web-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:109) ~[spring-web-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.21.jar:9.0.21]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.21.jar:9.0.21]
	at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92) ~[spring-web-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:109) ~[spring-web-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.21.jar:9.0.21]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.21.jar:9.0.21]
	at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93) ~[spring-web-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:109) ~[spring-web-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.21.jar:9.0.21]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.21.jar:9.0.21]
	at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.filterAndRecordMetrics(WebMvcMetricsFilter.java:114) ~[spring-boot-actuator-2.1.6.RELEASE.jar:2.1.6.RELEASE]
	at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:104) ~[spring-boot-actuator-2.1.6.RELEASE.jar:2.1.6.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:109) ~[spring-web-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.21.jar:9.0.21]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.21.jar:9.0.21]
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) ~[spring-web-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:109) ~[spring-web-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.21.jar:9.0.21]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.21.jar:9.0.21]
	at io.opentracing.contrib.web.servlet.filter.TracingFilter.doFilter(TracingFilter.java:189) ~[opentracing-web-servlet-filter-0.3.0.jar:?]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.21.jar:9.0.21]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.21.jar:9.0.21]
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) [tomcat-embed-core-9.0.21.jar:9.0.21]
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [tomcat-embed-core-9.0.21.jar:9.0.21]
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490) [tomcat-embed-core-9.0.21.jar:9.0.21]
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) [tomcat-embed-core-9.0.21.jar:9.0.21]
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) [tomcat-embed-core-9.0.21.jar:9.0.21]
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) [tomcat-embed-core-9.0.21.jar:9.0.21]
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) [tomcat-embed-core-9.0.21.jar:9.0.21]
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408) [tomcat-embed-core-9.0.21.jar:9.0.21]
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-embed-core-9.0.21.jar:9.0.21]
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:853) [tomcat-embed-core-9.0.21.jar:9.0.21]
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1587) [tomcat-embed-core-9.0.21.jar:9.0.21]
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-9.0.21.jar:9.0.21]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_192]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_192]
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-9.0.21.jar:9.0.21]
	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_192]

@Sam-Kruglov
Copy link

genericModelSubstitutes works but for Flux doesn't show it's an array though

@maccamlc
Copy link

maccamlc commented Jul 6, 2019

@Sam-Kruglov I recall that I just set the containerResponse to List and all works ....

I discovered this, plus genericModelSubstitutes by inspecting the annotation options. I'm new to spring fox but seems all the building blocks exist

@kevingnli
Copy link

I made it work with @EnableSwagger2WebFlux
But it doesn't show any operations.
When I define

return new Docket(DocumentationType.SWAGGER_2).select()
                .apis(RequestHandlerSelectors.any())
            .build().apiInfo(apiEndPointsInfo());

the read-operation-handler and web-flux-links-handler are shown at least.

I am not using @path annotations but
public RouterFunction monoRouterFunction

which defines routes like
.andRoute(GET("/any-route"),anyRouterHandler::test)

I added @ApiOperation to this anyRouterHandler.test function.
I tried @Api anotions at this handler or the RoutingConfiguration but all to no avail.

What am I missing?

And i have kotlin models and repositories. But I didn't expect those to show up anyways :)

Did you ever find a solution for this issue?

@mheidt
Copy link

mheidt commented Aug 18, 2019

Did you ever find a solution for this issue?
No. I switched technology. Using RabbitMQ and a JHipster frontend instead of Swagger2WebFlux

@codemasterbish
Copy link

codemasterbish commented Jan 12, 2020

The SpringFox 3 (Snapshot version) Swagger UI documentation is not generating properly the File Input Button for FilePart.

But working fine in Spring Doc Swagger UI.

image

@PostMapping(value = "/upload", consumes = {"multipart/form-data"})
    public void uploadDocument(@Valid @RequestPart(value = "uploadedBy") String uploadedBy,
                               @Valid @RequestPart(value = "file",required = false) FilePart file) throws Exception
{
......
}

Any help is appreciated.

@matus-krska
Copy link

@Sam-Kruglov Did you manage, to solve the issue with ServerHttpRequest. ?

@Sam-Kruglov
Copy link

@matus-krska if I remember correctly I tried this approach but actually I am still using 2.7.

@Numbernick
Copy link

Are there any updates? In our project we need the springfox integration for webflux, but the Snapshot is in development for over three year. Are there any plans on when this feature will be released? Or is there a good workarround for using the 2.9.2 release with webflux?

@kimec
Copy link

kimec commented May 13, 2020

@Numbernick we had an ugly so-so solution working for 3.0 SNAPSHOT, but one day 3.0-SNAPSHOT started to track a newer release of Spring which completely broken all our builds so we dropped the idea using spring-fox with WebFlux altogether (yes, it is a bad practice to follow SNAPSHOT builds in your production builds but there was no other choice at that time).
At one point I tried to port our code to spring-fox but I simply could not wrap my head around the custom gradle build infrastructure of spring-fox which seem to have quite some history.
So in the end we reverted to 2.9.2 and created a static swagger.yaml. Now whenever we add new WebFlux endpoints, we just write the API definition manually. We are using 2.9.2 effectively as a webjar to provide swagger-ui only. We could probably use some other webjar with swagger-ui, but using spring-fox swagger-ui was the fastest hack to make our builds work again.

@MaksimOrlov
Copy link
Member

MaksimOrlov commented May 13, 2020

@Numbernick, @kimec release of 3.0.0 is planned on this month. OAS 3.0 is almost ready. We are porting other features for a new api.

@Numbernick
Copy link

@MaksimOrlov Thank you very much for this information. I am looking forward to it :)
@kimec Thank you for the idea of this workarround. It is an interessting way (fortunately our service hasn't seen the light of production yet)

@Numbernick
Copy link

@codemasterbish A workarround to make uploads work in the Swagger-UI is to set the FilePart to a MultipartFile
Docket(SWAGGER_2) [...] .alternateTypeRules(RecursiveAlternateTypeRule( typeResolver, listOf( newRule( typeResolver.resolve(FilePart::class.java), typeResolver.resolve(MultipartFile::class.java)) )) )

@mattkvm
Copy link

mattkvm commented May 18, 2020

I'm trying to use Springfox3 (Snapshot version) for my SpringWebflux project, I have used @EnableSwagger2WebFlux, but it is not showing any operations.

I'm using RouteFunction to define routes, sample class is given below (kotlin)

@configuration
class EmployeeRoute(val employeeHandler: EmployeeHandler) {
@bean
fun linkRouter(employeeHandler: EmployeeHandler): RouterFunction {
return router {
GET("/v1").nest {
GET(
"/employees",
employeeHandler::handleGetEmployees
)
GET(
"/employees/{employeeId}",
employeeHandler::handleGetEmployeeById
)

        }
    }
}

}

And I added @ApiOperation in the EmployeeHandler class methods (handleGetEmployees & handleGetEmployeeById)

Will Springfox3 ((Snapshot version) ) be able to identify the paths/operations if we define the Route functions as above and @ApiOperation in handler class?

@elitgamaliel
Copy link

Claro, https://github.com/J-Ibarra/swagger-webflux-demo

podrias nuevamente compartir tu proyecto ya se rompio el enlace

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests