RedisRouteDefinitionRepository.java 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package com.yaozhitech.spring5.config;
  2. import org.springframework.beans.factory.annotation.Autowired;
  3. import org.springframework.cloud.gateway.route.RouteDefinition;
  4. import org.springframework.cloud.gateway.route.RouteDefinitionRepository;
  5. import org.springframework.stereotype.Component;
  6. import com.yaozhitech.spring5.service.RouteService;
  7. import lombok.extern.slf4j.Slf4j;
  8. import reactor.core.publisher.Flux;
  9. import reactor.core.publisher.Mono;
  10. @Component
  11. @Slf4j
  12. public class RedisRouteDefinitionRepository implements RouteDefinitionRepository {
  13. @Autowired
  14. private RouteService routeService;
  15. @Override
  16. public Flux<RouteDefinition> getRouteDefinitions() {
  17. return Flux.fromIterable(routeService.getRouteDefinitions());
  18. }
  19. @Override
  20. public Mono<Void> save(Mono<RouteDefinition> route) {
  21. return route.flatMap(routeDefinition -> {
  22. routeService.save(routeDefinition);
  23. return Mono.empty();
  24. });
  25. }
  26. @Override
  27. public Mono<Void> delete(Mono<String> routeId) {
  28. return routeId.flatMap(id -> {
  29. routeService.delete(id);
  30. return Mono.empty();
  31. });
  32. }
  33. }