package com.dbg.cloud.acheron; import com.dbg.cloud.acheron.autoconfigure.admin.IgnoreAdminEndpointsHandlerMapping; import com.dbg.cloud.acheron.autoconfigure.zuul.EnableAcheronZuulProxy; import com.dbg.cloud.acheron.autoconfigure.oauth2.OAuth2Properties; import com.dbg.cloud.acheron.plugins.oauth2.OAuth2ServerProvider; import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringBootConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.data.cassandra.CassandraDataAutoConfiguration; import org.springframework.boot.context.TypeExcludeFilter; import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.cloud.netflix.zuul.filters.RouteLocator; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.FilterType; import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; @SpringBootConfiguration @EnableAutoConfiguration(exclude = {CassandraDataAutoConfiguration.class}) @ComponentScan( excludeFilters = { @ComponentScan.Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class), @ComponentScan.Filter(type = FilterType.REGEX, pattern = "com.dbg.cloud.acheron.adminendpoints.*"), }) @EnableAcheronZuulProxy public class AcheronApplication { public static void main(String[] args) { SpringApplication.run(AcheronApplication.class, args); } @Bean public OAuth2ServerProvider oAuth2ServerFactory(OAuth2Properties properties, RouteLocator routeLocator, RestTemplateBuilder restTemplateBuilder) { return new OAuth2ServerProvider.Default(properties.getClientId(), properties.getClientSecret(), routeLocator, restTemplateBuilder); } @Configuration public static class WebConfig extends WebMvcConfigurationSupport { @Bean public RequestMappingHandlerMapping requestMappingHandlerMapping() { return super.requestMappingHandlerMapping(); } @Override protected RequestMappingHandlerMapping createRequestMappingHandlerMapping() { return new IgnoreAdminEndpointsHandlerMapping(); } } }