com.codependent.niorest.SpringNioRestApplication.java Source code

Java tutorial

Introduction

Here is the source code for com.codependent.niorest.SpringNioRestApplication.java

Source

package com.codependent.niorest;

import java.util.ArrayList;
import java.util.List;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.embedded.FilterRegistrationBean;
import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
import org.springframework.cloud.netflix.rx.RxJavaAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Import;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;

import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

import com.codependent.niorest.filter.CorsFilter;

@EnableCircuitBreaker
@Import(RxJavaAutoConfiguration.class)
@SpringBootApplication
@EnableSwagger2
public class SpringNioRestApplication {

    @Bean
    public Docket nioApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                //.groupName("full-spring-nio-api")
                .apiInfo(apiInfo()).useDefaultResponseMessages(false).select().build();
    }

    @Bean
    public FilterRegistrationBean registerCorsFilter() {
        CorsFilter cf = new CorsFilter();
        List<String> urlPatterns = new ArrayList<String>();
        urlPatterns.add("/*");
        FilterRegistrationBean registrationBean = new FilterRegistrationBean();
        registrationBean.setFilter(cf);
        registrationBean.setUrlPatterns(urlPatterns);
        registrationBean.setOrder(1);
        return registrationBean;
    }

    @Bean
    public ThreadPoolTaskExecutor executor() {
        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
        executor.setCorePoolSize(5000);
        return executor;
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder().title("Spring NIO Rest API")
                .description("A couple of services to test Java NIO Performance")
                .termsOfServiceUrl("http://some.io").contact("codependent").license("Apache License Version 2.0")
                .licenseUrl("https://github.com/codependent/spring-nio-rest/LICENSE").version("2.0").build();
    }

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