me.jcala.xmarket.server.conf.RestConfig.java Source code

Java tutorial

Introduction

Here is the source code for me.jcala.xmarket.server.conf.RestConfig.java

Source

package me.jcala.xmarket.server.conf;

import lombok.extern.slf4j.Slf4j;
import me.jcala.xmarket.server.annotation.SwaggerIgnore;
import me.jcala.xmarket.server.entity.configuration.ApplicationInfo;
import me.jcala.xmarket.server.interceptor.TokenInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.context.request.async.DeferredResult;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiKey;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

import java.util.Arrays;

import static com.google.common.base.Predicates.not;
import static com.google.common.base.Predicates.or;
import static springfox.documentation.builders.PathSelectors.regex;
import static springfox.documentation.builders.RequestHandlerSelectors.withClassAnnotation;

/**
 *??,???
 * restconfig
 */
@Slf4j
@Configuration
@EnableSwagger2 //swagger?
public class RestConfig extends WebMvcConfigurerAdapter {
    public static final String picUrlPath = "/api/v1/file/img/";
    @Value("${xmarket.pic_home}")
    private String picHome;

    @Value("${xmarket.address")
    private String address;

    @Value("${xmarket.jwt.key}")
    private String jwtKey;

    @Value("${xmarket.jwt.life}")
    private String jwtLife;

    @SuppressWarnings("unchecked")
    @Bean
    public Docket ordinaryApi() {
        return new Docket(DocumentationType.SWAGGER_2).groupName("ordinary-api")
                .genericModelSubstitutes(DeferredResult.class).useDefaultResponseMessages(false)
                .forCodeGeneration(true).pathMapping("/").select().paths(or(regex(".*")))
                .apis(not(withClassAnnotation(SwaggerIgnore.class)))
                .apis(RequestHandlerSelectors.basePackage("me.jcala.xmarket.server.ctrl")).build()
                .apiInfo(infoBuilder().description("api?").build());
    }

    @SuppressWarnings("unchecked")
    @Bean
    public Docket adminApi() {
        return new Docket(DocumentationType.SWAGGER_2).groupName("admin-api")
                .genericModelSubstitutes(DeferredResult.class).useDefaultResponseMessages(false)
                .forCodeGeneration(true).pathMapping("/").select().paths(or(regex(".*")))
                .apis(not(withClassAnnotation(SwaggerIgnore.class)))
                .apis(RequestHandlerSelectors.basePackage("me.jcala.xmarket.server.admin.ctrl")).build()
                .apiInfo(infoBuilder().description("?api?").build());
    }

    private ApiInfoBuilder infoBuilder() {
        return new ApiInfoBuilder().title("xmarket-server").version("0.1.0").license("MIT")
                .termsOfServiceUrl("http://115.28.18.158/")
                .contact(new Contact("jcala", "https://github.com/jcalaz", "jcalaz@163.com"));
    }

    private ApiKey apiKey() {
        return new ApiKey("mykey", "api_key", "header");
    }

    /**
     * 
     */
    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration configuration = new CorsConfiguration();
        configuration.setAllowCredentials(true);
        configuration.addAllowedOrigin("*");
        configuration.addAllowedHeader("*");
        configuration.setAllowedMethods(Arrays.asList("GET", "PUT", "POST", "DELETE"));
        source.registerCorsConfiguration("/**", configuration);
        return new CorsFilter(source);
    }

    /**
     *Validator?
     */
    /* @Bean
     public LocalValidatorFactoryBean validator(){
    LocalValidatorFactoryBean validatorFactoryBean=new LocalValidatorFactoryBean();
    validatorFactoryBean.setProviderClass(HibernateValidator.class);
    return validatorFactoryBean;
     }*/
    @Bean
    public boolean applicationInfoInit() {
        log.info("??jwt???");
        long life = 3600000;
        try {
            life = Long.parseLong(jwtLife);
        } catch (Exception e) {
            log.error("jwt life!3600000");
        }
        ApplicationInfo.setAddress(address);
        ApplicationInfo.setPicHome(picHome);
        ApplicationInfo.setJwtKey(jwtKey);
        ApplicationInfo.setJwtLife(life);
        return true;
    }

}