54.3. Spring Boot 実装
本セクションでは、Spring Boot で Swagger2Feature を使用する方法について説明します。
OpenAPI 3 実装では、OpenApiFeature (org.apache.cxf.jaxrs.openapi.OpenApiFeature
) を使用することに注意してください。
54.3.1. クイックスタートの例
クイックスタートサンプル (https://github.com/fabric8-quickstarts/spring-boot-cxf-jaxrs
) は、Spring Boot で Apache CXF を使用する方法を実証します。クイックスタートは Spring Boot を使用して、Swagger が有効な CXF JAX-RS エンドポイントが含まれるアプリケーションを設定します。
54.3.2. Swagger の有効化
Swagger を有効にするには、以下の操作が必要です。
REST アプリケーションで以下を行います。
Swagger2Feature をインポートする。
import org.apache.cxf.jaxrs.swagger.Swagger2Feature;
Swagger2Feature を CXF エンドポイントに追加する。
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
を参照してください。例は、例 55.2: Java 実装ファイル を参照してください。
Java ファイルで、Swagger アノテーションを JAX-RS でアノテーションが付けられたエンドポイント (
@PATH
、@PUT
、@POST
、@GET
、@Produces
、@Consumes
、@DELETE
、@PathParam
など) に追加します。例は、例 55.3: Java ファイル を参照してください。
例 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(); } }
例 55.2: Java 実装ファイル
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!!!"; } }
例 55.3: Java ファイル
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); }