WebFlux 整合 FreeMarker

JAVA herman 245浏览
公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:codedq,发送下载链接帮助你免费下载!
本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:codedq,之前的微信号好友位已满,备注:返现
饿了么大量招人,我内推!Java 方向!薪资不设上限,工作年龄不限!工作地点限魔都,可电话面试!简历,发我微信:codedq
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
视频教程免费领

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 的道路上越走越远!

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号1:xmtxtt(5000人已满),微信号2:xttblog(5000人已满),微信号3:codedq(超3800)。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!

本文原文出处:业余草: » WebFlux 整合 FreeMarker