3

Spring Boot+Jersey+JaxRs アプリケーションを Swagger 用に構成するための例はありますか?

この投稿を参照すると、アプリに以下のコードがあり、swagger UI を表示できず、使用してリソースを一覧表示することもできません

http://localhost:8080/api/root/{funcId}/entities

.

ApplicationInitializer クラス: (Groovy)


@Configuration
@EnableAutoConfiguration
class Application extends SpringBootServletInitializer {
    public static void main(String[] args) {
        SpringApplication.run( Application.class, args)
    }
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources( Application, "classpath:/META-INF/com/company/automation/functionality/bootstrap.xml");
    }

    @Bean
    ServletRegistrationBean jerseyServlet() {
        ServletRegistrationBean registration = new ServletRegistrationBean(new SpringServlet());
        Map params = ["com.sun.jersey.config.property.packages":"com.company.automation.functionality.impl;com.wordnik.swagger.jersey.listing"]
        registration.setInitParameters(params)
        return registration;
    }

    @Bean
    ServletRegistrationBean jerseyJaxrsConfig() {
        ServletRegistrationBean registration = new ServletRegistrationBean(new JerseyJaxrsConfig());
        Map params = ["swagger.api.basepath":"http://localhost:8080/api", "api.version":"1.0"]
        registration.setInitParameters(params)
        return registration;
    }
}

リソース:


@Component
@Path('root/{funcId}/entities')
@Api (value = "root/{funcId}/entities", description = "Operations about entity Details")
@CompileStatic
class EntityDetailsResource {
..
}

[編集]。私はJersey 1.16を使用していますが、アプリケーションへの影響によりJersey 2を使用できません

4

2 に答える 2

2

Jersey 2 を使用する Spring Boot アプリの例を次に示します: http://raibledesigns.com/rd/entry/a_webapp_makeover_with_spring

于 2014-03-28T12:45:37.847 に答える
2

私はそれを機能させることができましたが、Jersey 1.x での Spring サポートの良さがわからないので、2.7 で実行しました (投稿したリンクは JAX-RS 1.x 用です)。これはうまくいきました:

@Configuration
@ComponentScan
@EnableAutoConfiguration
@Path("/")
@Api(value = "home", description = "Demo API")
public class Application extends ResourceConfig implements CommandLineRunner {

    @GET
    @ApiOperation(value = "Get Greeting", notes = "Returns greeting")
    public String home() {
        return "Hello";
    }

    @Override
    public void run(String... args) throws Exception {
        SwaggerConfig config = ConfigFactory.config();
        config.setBasePath("http://localhost:8080/");
        config.setApiVersion("1.0.0");
        ScannerFactory.setScanner(new DefaultJaxrsScanner());
        ClassReaders.setReader(new JerseyApiReader());
    }

    public Application() {
        register(Application.class);
        packages("com.wordnik.swagger.jersey.listing");
    }

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

実験的なspring-boot-jerseyを使用して Jersey サーブレットを作成しますがServletRegistration @Bean、vanilla Boot に固執する場合は a を使用して簡単に行うことができます。

Jersey のバージョンを固定し、いくつかの除外を追加する必要がありました。ここに私の依存関係があります:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
    </dependency>
    <dependency>
        <groupId>com.wordnik</groupId>
        <artifactId>swagger-jersey2-jaxrs_2.10</artifactId>
        <version>1.3.2</version>
        <exclusions>
            <exclusion>
                <artifactId>jsr311-api</artifactId>
                <groupId>javax.ws.rs</groupId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-server</artifactId>
        <version>2.7</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet-core</artifactId>
        <version>2.7</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet</artifactId>
        <version>2.7</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-jersey</artifactId>
        <version>1.0.0.BUILD-SNAPSHOT</version>
    </dependency>
</dependencies>
于 2014-03-28T09:24:01.287 に答える