ApiApplicationStart.java 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. package com.java110.api;
  2. import com.java110.core.annotation.Java110ListenerDiscovery;
  3. import com.java110.core.client.RestTemplate;
  4. import com.java110.event.service.api.ServiceDataFlowEventPublishing;
  5. import com.java110.service.init.ServiceStartInit;
  6. import io.swagger.annotations.ApiOperation;
  7. import org.slf4j.Logger;
  8. import org.slf4j.LoggerFactory;
  9. import org.springframework.boot.SpringApplication;
  10. import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
  11. import org.springframework.boot.autoconfigure.SpringBootApplication;
  12. import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
  13. import org.springframework.boot.web.client.RestTemplateBuilder;
  14. import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
  15. import org.springframework.cloud.client.loadbalancer.LoadBalanced;
  16. import org.springframework.cloud.netflix.feign.EnableFeignClients;
  17. import org.springframework.context.ApplicationContext;
  18. import org.springframework.context.annotation.Bean;
  19. import org.springframework.http.converter.StringHttpMessageConverter;
  20. import springfox.documentation.builders.ApiInfoBuilder;
  21. import springfox.documentation.builders.PathSelectors;
  22. import springfox.documentation.builders.RequestHandlerSelectors;
  23. import springfox.documentation.service.ApiInfo;
  24. import springfox.documentation.spi.DocumentationType;
  25. import springfox.documentation.spring.web.plugins.Docket;
  26. import springfox.documentation.swagger2.annotations.EnableSwagger2;
  27. import java.nio.charset.Charset;
  28. /**
  29. * spring boot 初始化启动类
  30. *
  31. * @version v0.1
  32. * @auther com.java110.wuxw
  33. * @mail 928255095@qq.com
  34. * @date 2016年8月6日
  35. * @tag
  36. */
  37. @SpringBootApplication(scanBasePackages = {"com.java110.service.aop",
  38. "com.java110.service.configuration",
  39. "com.java110.service.controller",
  40. "com.java110.service.filter",
  41. "com.java110.service.init", "com.java110.api", "com.java110.core", "com.java110.event.service.api", "com.java110.cache"})
  42. @EnableDiscoveryClient
  43. @Java110ListenerDiscovery(listenerPublishClass = ServiceDataFlowEventPublishing.class,
  44. basePackages = {"com.java110.api.listener"})
  45. @EnableSwagger2
  46. //@EnableConfigurationProperties(EventProperties.class)
  47. @EnableFeignClients(basePackages = {"com.java110.core.smo"})
  48. @EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class})
  49. public class ApiApplicationStart {
  50. private static Logger logger = LoggerFactory.getLogger(ApiApplicationStart.class);
  51. /**
  52. * 实例化RestTemplate,通过@LoadBalanced注解开启均衡负载能力.
  53. *
  54. * @return restTemplate
  55. */
  56. @Bean
  57. @LoadBalanced
  58. public RestTemplate restTemplate() {
  59. StringHttpMessageConverter m = new StringHttpMessageConverter(Charset.forName("UTF-8"));
  60. RestTemplate restTemplate = new RestTemplateBuilder().additionalMessageConverters(m).build(RestTemplate.class);
  61. return restTemplate;
  62. }
  63. /**
  64. * 实例化RestTemplate
  65. *
  66. * @return restTemplate
  67. */
  68. @Bean
  69. public RestTemplate restTemplateNoLoadBalanced() {
  70. StringHttpMessageConverter m = new StringHttpMessageConverter(Charset.forName("UTF-8"));
  71. RestTemplate restTemplate = new RestTemplateBuilder().additionalMessageConverters(m).build(RestTemplate.class);
  72. return restTemplate;
  73. }
  74. /**
  75. * swagger 插件
  76. * @return Docket 对象
  77. */
  78. @Bean
  79. public Docket swaggerSpringMvcPlugin() {
  80. return new Docket(DocumentationType.SWAGGER_2)
  81. .apiInfo(apiInfo())
  82. .select()
  83. .paths(PathSelectors.any())
  84. .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)).build();
  85. }
  86. /**
  87. * 创建该API的基本信息(这些基本信息会展现在文档页面中)
  88. * 访问地址:http://项目实际地址/swagger-ui.html
  89. *
  90. * @return
  91. */
  92. private ApiInfo apiInfo() {
  93. return new ApiInfoBuilder()
  94. .title("Swagger2构建RESTful APIs")
  95. .description("api信息")
  96. .termsOfServiceUrl("https://github.com/java110/MicroCommunity")
  97. .contact("sunf")
  98. .version("1.0")
  99. .build();
  100. }
  101. public static void main(String[] args) throws Exception {
  102. ApplicationContext context = SpringApplication.run(ApiApplicationStart.class, args);
  103. //服务启动加载
  104. ServiceStartInit.initSystemConfig(context);
  105. }
  106. }