ca2c74242d9cb076bfc63b76d85268b83ae37d0c.svn-base 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. package org.jeecg.config;
  2. import lombok.extern.slf4j.Slf4j;
  3. import org.jeecg.handler.HystrixFallbackHandler;
  4. import org.springframework.beans.factory.annotation.Value;
  5. import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
  6. import org.springframework.context.annotation.Bean;
  7. import org.springframework.context.annotation.Configuration;
  8. import org.springframework.http.MediaType;
  9. import org.springframework.web.reactive.function.server.RequestPredicates;
  10. import org.springframework.web.reactive.function.server.RouterFunction;
  11. import org.springframework.web.reactive.function.server.RouterFunctions;
  12. import org.springframework.web.reactive.function.server.ServerResponse;
  13. import javax.annotation.Resource;
  14. import static org.springframework.web.reactive.function.server.RequestPredicates.GET;
  15. import static org.springframework.web.reactive.function.server.RouterFunctions.route;
  16. import static org.springframework.web.reactive.function.server.ServerResponse.ok;
  17. /**
  18. * @author scott
  19. * @date 2020/05/26
  20. * 路由配置信息
  21. */
  22. @Slf4j
  23. @Configuration
  24. public class GatewayRoutersConfiguration {
  25. public static final long DEFAULT_TIMEOUT = 30000;
  26. public static String SERVER_ADDR;
  27. public static String NAMESPACE;
  28. public static String DATA_ID;
  29. public static String ROUTE_GROUP;
  30. public static String USERNAME;
  31. public static String PASSWORD;
  32. /**
  33. * 路由配置文件数据获取方式yml,nacos,database
  34. */
  35. public static String DATA_TYPE;
  36. @Value("${spring.cloud.nacos.discovery.server-addr}")
  37. public void setServerAddr(String serverAddr) {
  38. SERVER_ADDR = serverAddr;
  39. }
  40. @Value("${spring.cloud.nacos.discovery.namespace}")
  41. public void setNamespace(String namespace) {
  42. NAMESPACE = namespace;
  43. }
  44. @Value("${jeecg.route.config.data-id:#{null}}")
  45. public void setRouteDataId(String dataId) {
  46. DATA_ID = dataId + ".json";
  47. }
  48. @Value("${jeecg.route.config.group:DEFAULT_GROUP:#{null}}")
  49. public void setRouteGroup(String routeGroup) {
  50. ROUTE_GROUP = routeGroup;
  51. }
  52. @Value("${jeecg.route.config.data-type}")
  53. public void setDataType(String dataType) { DATA_TYPE = dataType; }
  54. @Value("${spring.cloud.nacos.config.username}")
  55. public void setUsername(String username) {
  56. USERNAME = username;
  57. }
  58. @Value("${spring.cloud.nacos.config.password}")
  59. public void setPassword(String password) {
  60. PASSWORD = password;
  61. }
  62. /**
  63. * 路由断言
  64. * @return
  65. */
  66. @Bean
  67. public RouterFunction routerFunction() {
  68. return RouterFunctions.route(
  69. RequestPredicates.path("/globalFallback").and(RequestPredicates.accept(MediaType.TEXT_PLAIN)), hystrixFallbackHandler);
  70. }
  71. /**
  72. * 映射接口文档默认地址(通过9999端口直接访问)
  73. * @param indexHtml
  74. * @return
  75. */
  76. @Bean
  77. public RouterFunction<ServerResponse> indexRouter(@Value("classpath:/META-INF/resources/doc.html") final org.springframework.core.io.Resource indexHtml) {
  78. return route(GET("/"), request -> ok().contentType(MediaType.TEXT_HTML).syncBody(indexHtml));
  79. }
  80. @Resource
  81. private HystrixFallbackHandler hystrixFallbackHandler;
  82. }