下面列出了怎么用org.springframework.web.servlet.function.RouterFunctions的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
public void initialize(GenericApplicationContext context) {
super.initialize(context);
this.dsl.accept(this);
context.registerBean(BeanDefinitionReaderUtils.uniqueBeanName(RouterFunction.class.getName(), context), RouterFunction.class, () ->
RouterFunctions.route().resources("/**", new ClassPathResource("static/")).build()
);
serverProperties.setPort(port);
serverProperties.getServlet().setRegisterDefaultServlet(false);
if (!convertersConfigured) {
new StringConverterInitializer().initialize(context);
new ResourceConverterInitializer().initialize(context);
}
if (context.containsBeanDefinition("webHandler")) {
throw new IllegalStateException("Only one webFlux per application is supported");
}
new ServletWebServerInitializer(serverProperties, webMvcProperties, resourceProperties).initialize(context);
}
private ServerRequest getServerRequest(HttpServletRequest servletRequest) {
ServerRequest serverRequest =
(ServerRequest) servletRequest.getAttribute(RouterFunctions.REQUEST_ATTRIBUTE);
Assert.state(serverRequest != null, () -> "Required attribute '" +
RouterFunctions.REQUEST_ATTRIBUTE + "' is missing");
return serverRequest;
}
@Nullable
@Override
protected Object getHandlerInternal(@NotNull HttpServletRequest servletRequest) throws Exception {
if (this.routerFunction != null) {
ServerRequest request = ServerRequest.create(servletRequest, this.messageConverters);
servletRequest.setAttribute(RouterFunctions.REQUEST_ATTRIBUTE, request);
return this.routerFunction.route(request).orElse(null);
}
else {
return null;
}
}
/**
* Configure routes via {@link RouterFunctions.Builder}.
* @see org.springframework.fu.jafu.BeanDefinitionDsl#bean(Class, BeanDefinitionCustomizer...)
*/
public WebMvcServerDsl router(Consumer<RouterFunctions.Builder> routerDsl) {
RouterFunctions.Builder builder = RouterFunctions.route();
context.registerBean(BeanDefinitionReaderUtils.uniqueBeanName(RouterFunction.class.getName(), context), RouterFunction.class, () -> {
routerDsl.accept(builder);
return builder.build();
});
return this;
}