Spring Cloud Gateway no BindException No se pudieron vincular las propiedades en '' a x.xx.xxx

Error de Spring Cloud Gateway BindException No se pudieron vincular las propiedades en '' a la solución x.xx.xxx.XXXFactory$Config

Cualquiera de las clases de fábrica de aserciones de ruta personalizadas:

/* import */

/**
 * 自定义路由断言工厂类
 * @author Ordinary
 */
@Component
public class AgeRoutePredicateFactory extends AbstractRoutePredicateFactory<AgeRoutePredicateFactory.Config> {
    
    

    public AgeRoutePredicateFactory() {
    
    
        super(Config.class);
    }

    @Override
    public List<String> shortcutFieldOrder() {
    
    
        return List.of("minAge", "maxAge");
    }

    @Override
    public Predicate<ServerWebExchange> apply(Config config) {
    
    
        return serverWebExchange -> {
    
    
            String ageStr = serverWebExchange.getRequest().getQueryParams().getFirst("age");
            if (StringUtils.isNotEmpty(ageStr)) {
    
    
                int age = Integer.parseInt(ageStr);
                return age >= config.minAge && age <= config.maxAge;
            }
            return false;
        };
    }

    @Data
    static class Config {
    
    
        private int minAge;
        private int maxAge;
    }
}

/* import */

/**
 * @author Ordinary
 */
@Slf4j
@Component
public class LogGatewayFilterFactory extends AbstractGatewayFilterFactory<LogGatewayFilterFactory.Config> {
    
    

    public LogGatewayFilterFactory() {
    
    
        super(Config.class);
    }

    @Override
    public List<String> shortcutFieldOrder() {
    
    
        return List.of("consoleLog", "cacheLog");
    }

    @Override
    public GatewayFilter apply(Config config) {
    
    
        return new GatewayFilter() {
    
    
            @Override
            public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
    
    
                if (config.consoleLog) {
    
    
                    log.info("console log enabled.");
                }
                if (config.cacheLog) {
    
    
                    log.info("cache log enabled.");
                }
                return chain.filter(exchange);
            }
        };
    }

    @Data
    static class Config{
    
     /* 在这个位置加上static */
        private boolean consoleLog;
        private boolean cacheLog;

    }
}

Solo necesita agregarlo a la clase interna Config staticpara convertirlo en una clase estática interna, que tiene prioridad sobre la carga de fábrica.

Supongo que te gusta

Origin blog.csdn.net/Holmes_shuai/article/details/123986161
Recomendado
Clasificación