In this post we are going to add some of the CXF features to our existing app that we developed in previous post. These features are :
- ID Logging
- Jackson Provider for POJO to JSON conversion
- Swagger 2 documentation
Step 1: Configuration class
Create a RestServer class in config package as shown below
package org.blog.config; import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider; import org.apache.cxf.feature.LoggingFeature; import org.apache.cxf.jaxrs.swagger.Swagger2Feature; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * Created by Anand_Rajneesh on 3/23/2017. */ @Configuration public class RestServer { @Bean public JacksonJsonProvider jsonProvider(){ return new JacksonJsonProvider(); } @Bean public LoggingFeature loggingFeature(){ return new LoggingFeature(); } @Bean public Swagger2Feature swagger(){ Swagger2Feature swagger = new Swagger2Feature(); swagger.setBasePath("/services"); swagger.setContact(""); swagger.setLicense(""); swagger.setTitle("Demo Spring Boot CXF Application"); swagger.setDescription(""); return swagger; } }
We have 3 @Bean methods, which are returning instances of each feature.
Step 2: POM dependencies
<dependency> <groupId>com.fasterxml.jackson.jaxrs</groupId> <artifactId>jackson-jaxrs-json-provider</artifactId> <version>2.8.5</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-rs-service-description-swagger</artifactId> <version>${cxf.version}</version> </dependency> <dependency> <groupId>org.webjars</groupId> <artifactId>swagger-ui</artifactId> <version>${swaggerui.version}</version> </dependency>
Step 3: Adding Swagger annotations
Add swagger annotations to Ping service that was created in previous past like below.
package org.blog.rest; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiResponse; import org.springframework.stereotype.Service; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; /** * Created by Anand_Rajneesh on 3/24/2017. */ @Path("/ping") @Service @Api(value = "ping") @Produces(MediaType.TEXT_PLAIN) public class Ping { @GET @ApiOperation(value="Health Check") @ApiResponse(code=200, message ="") public Response health(){ return Response.ok().build(); } }
Now go ahead and deploy the server, and go at http://localhost:8080/services/services. You would get a link to swagger ui there.
Comments
Post a Comment