WebFlux 整合 FreeMarker,深度定制有比较复杂的配置,所以单独拿一章来讲!
FreeMarker 是 Apache 开源的一个模板引擎,不会的可以去看 FreeMarker 的简单语法,本文主要讲解配置,不涉及具体用法。
借助 WebFlux 的 WebFluxConfigurer 接口和 @EnableWebFlux 注解,可以轻松的搞定两者之间的整合。举例如下:
@Configuration
@EnableWebFlux
public class WebConfig implements WebFluxConfigurer {
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
registry.freeMarker();
}
// Configure FreeMarker...
@Bean
public FreeMarkerConfigurer freeMarkerConfigurer() {
FreeMarkerConfigurer configurer = new FreeMarkerConfigurer();
configurer.setTemplateLoaderPath("classpath:/templates/freemarker");
return configurer;
}
}
上面代码中,模板的存储路径由 FreeMarkerConfigurer 指定。然后,如果你的控制器返回视图名称 welcome,那么解析器将查找 classpath:/templates/freemarker/welcome.ftl 模板。
@Configuration
@EnableWebFlux
public class WebConfig implements WebFluxConfigurer {
// ...
@Bean
public FreeMarkerConfigurer freeMarkerConfigurer() {
Map<String, Object> variables = new HashMap<>();
variables.put("xml_escape", new XmlEscape());
variables.put("weixin", "codedq");
FreeMarkerConfigurer configurer = new FreeMarkerConfigurer();
configurer.setTemplateLoaderPath("classpath:/templates");
configurer.setFreemarkerVariables(variables);
return configurer;
}
}
除了 FreeMarker,WebFlux 还支持非常多的模版引擎和视图配置,比如:Thymeleaf,ScriptTemplateConfigurer,Jackson2JsonEncoder、Jackson2SmileEncoder、Jaxb2XmlEncoder,HttpMessageWriterView,SpringResourceTemplateResolver,SpringWebFluxTemplateEngine,ThymeleafReactiveViewResolver 等。
WebFlux 在今年 2 月份又更新了,从去年到今年,我发现越来越多的人正在使用 WebFlux。期待大家在 WebFlux 的道路上越走越远!
: » WebFlux 整合 FreeMarker
原创文章,作者:kepupublish,如若转载,请注明出处:https://blog.ytso.com/tech/java/252221.html