Dynamic SpringWebFlux:在运行时以编程方式添加路由

Dynamic SpringWebFlux:在运行时以编程方式添加路由,dynamic,routes,spring-webflux,Dynamic,Routes,Spring Webflux,在SpringWebFlux中,我试图以编程方式在运行时添加RouterFunction 这就是我试图实现的目标: @RestController public class TestController { @Autowired ApplicationContext context; @GetMapping("/add") public String test() { ConfigurableApplicationConte

在SpringWebFlux中,我试图以编程方式在运行时添加RouterFunction

这就是我试图实现的目标:

@RestController
public class TestController {

    @Autowired
    ApplicationContext context;

    @GetMapping("/add")
    public String test() {
        ConfigurableApplicationContext configContext = (ConfigurableApplicationContext) context;
        SingletonBeanRegistry beanRegistry = configContext.getBeanFactory();

        RouterFunction<ServerResponse> route = RouterFunctions.route(GET("/new/{id}"),
                serverRequest -> ServerResponse.ok().bodyValue("okay!"));

        beanRegistry.registerSingleton("route123", route);

        return "success";
    }

}
@RestController
公共类测试控制器{
@自动连线
应用上下文上下文;
@GetMapping(“/add”)
公共字符串测试(){
ConfigurableApplicationContext configContext=(ConfigurableApplicationContext)上下文;
SingletonBeanRegistry beanRegistry=configContext.getBeanFactory();
RouterFunction route=RouterFunctions.route(GET(“/new/{id}”),
serverRequest->ServerResponse.ok().bodyValue(“ok!”);
beanRegistry.registerSingleton(“路线123”,路线);
返回“成功”;
}
}
当我点击/add时,新的RouterFunction bean被添加到应用程序上下文中。但当我点击新路线时,它返回404


我想实现的目标可能吗?或者只能在启动时配置新路径?

所有
路由功能在启动时合并为一个。我认为您需要阅读源代码才能找到包含所有路由器的目标bean。或者您可以创建自己的子系统。