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 static
para convertirlo en una clase estática interna, que tiene prioridad sobre la carga de fábrica.