WebFlux 整合 FreeMarker

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

: » WebFlux 整合 FreeMarker

原创文章,作者:kepupublish,如若转载,请注明出处:https://blog.ytso.com/tech/java/252221.html

(0)
上一篇 2022年5月4日 06:10
下一篇 2022年5月4日 06:14

相关推荐

发表回复

登录后才能评论