54.3. Spring Boot 实施
本节论述了如何在 Spring Boot 中使用 Swagger2Feature。
请注意,对于 OpenAPI 3 实现,使用 OpenApiFeature (org.apache.cxf.jaxrs.openapi.OpenApiFeature
)。
54.3.1. Quickstart 示例
Quickstart 示例(https://github.com/fabric8-quickstarts/spring-boot-cxf-jaxrs
)演示了如何在 Spring Boot 中使用 Apache CXF。Quickstart 使用 Spring Boot 配置包含启用了 Swagger 的 CXF JAX-RS 端点的应用程序。
54.3.2. 启用 Swagger
启用 Swagger 涉及:
在 REST 应用程序中:
导入 Swagger2Feature:
import org.apache.cxf.jaxrs.swagger.Swagger2Feature;
在 CXF 端点中添加 Swagger2Feature:
endpoint.setFeatures(Arrays.asList(new Swagger2Feature()));
例如,请参阅 示例 55.1 示例 REST 应用程序。
在 Java 实现文件中,为服务所需的每个注解导入 Swagger API 注解:
import io.swagger.annotations.*
其中 * =
Api
,ApiOperation
,ApiParam
,ApiResponse
,ApiResponses
, 等。详情请查看
https://github.com/swagger-api/swagger-core/wiki/Annotations
。例如,请参阅 Java 实现文件示例 55.2 示例。
在 Java 文件中,将 Swagger 注释添加到 JAX-RS 注释(
@PATH
,@PUT
,@POST
,@GET
,@Produces
,@Consumes
,@DELETE
,@PathParam
, 等)。例如,请参阅 Java 文件示例 55.3 示例。
示例 55.1 示例 REST 应用程序
package io.fabric8.quickstarts.cxf.jaxrs; import java.util.Arrays; import org.apache.cxf.Bus; import org.apache.cxf.endpoint.Server; import org.apache.cxf.jaxrs.JAXRSServerFactoryBean; import org.apache.cxf.jaxrs.swagger.Swagger2Feature; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; @SpringBootApplication public class SampleRestApplication { @Autowired private Bus bus; public static void main(String[] args) { SpringApplication.run(SampleRestApplication.class, args); } @Bean public Server rsServer() { // setup CXF-RS JAXRSServerFactoryBean endpoint = new JAXRSServerFactoryBean(); endpoint.setBus(bus); endpoint.setServiceBeans(Arrays.<Object>asList(new HelloServiceImpl())); endpoint.setAddress("/"); endpoint.setFeatures(Arrays.asList(new Swagger2Feature())); return endpoint.create(); } }
Java 实现文件示例 55.2 示例
import io.swagger.annotations.Api; @Api("/sayHello") public class HelloServiceImpl implements HelloService { public String welcome() { return "Welcome to the CXF RS Spring Boot application, append /{name} to call the hello service"; } public String sayHello(String a) { return "Hello " + a + ", Welcome to CXF RS Spring Boot World!!!"; } }
Java 文件示例 55.3 示例
package io.fabric8.quickstarts.cxf.jaxrs; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import org.springframework.stereotype.Service; @Path("/sayHello") @Service public interface HelloService { @GET @Path("") @Produces(MediaType.TEXT_PLAIN) String welcome(); @GET @Path("/{a}") @Produces(MediaType.TEXT_PLAIN) String sayHello(@PathParam("a") String a); }