spring boot配置freemarker--autoIncludes

最近公司新开了个项目用了freemarker,在用宏的时候想在所有的模版都自动注入所以的宏模版。去看了spring boot的自动化配置的源码。感觉spring boot的配置好的spring boot不用变,想在spring boot的congiguration上改。

  1. 先注入spring boot的freemarkerProperties
    /**
     * 拿到spring boot中的fm自动化配置
     */
    @Autowired
    private FreeMarkerProperties properties;
  1. 覆盖FreeMarkerConfigurer
    /**
     * 覆盖spring boot中的freemarker配置
     *
     * @return
     */
    @Bean
    public FreeMarkerConfigurer freeMarkerConfigurer() {
        //写入配置
        FreeMarkerConfigurer factory = new FreeMarkerConfigurer();
        writerProperties(factory);

        //创建fm的配置,并且将factory中的信息写入到configuration中
        Configuration configuration = null;
        try {
            configuration = factory.createConfiguration();
            //和spring boot不同的部分,这部分是用来写入我们需要的freemarker configuration
            List<String> autoIncludes = Lists.newArrayListWithCapacity(1);
            //注意macro\macro.ftl这个路径是和在spring.freemarker.template-loader-path下
            autoIncludes.add("macro\\macro.ftl");
            configuration.setAutoIncludes(autoIncludes);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (TemplateException e) {
            e.printStackTrace();
        }
        factory.setConfiguration(configuration);
        return factory;
    }

    private void writerProperties(FreeMarkerConfigurer factory){
        factory.setTemplateLoaderPaths(this.properties.getTemplateLoaderPath());
        factory.setPreferFileSystemAccess(this.properties.isPreferFileSystemAccess());
        factory.setDefaultEncoding(this.properties.getCharsetName());
        Properties settings = new Properties();
        settings.putAll(this.properties.getSettings());
        factory.setFreemarkerSettings(settings);
    }
  1. marco.ftl包含所有的marco

注意这里的include路径也是在spring.freemarker.template-loader-path下的

<#include "macro/commonSelect.ftl"/>
<#include "macro/renderValue.ftl"/>
<#include "macro/bootSelect.ftl"/>
<#include "macro/dictToJson.ftl"/>

同理autoImport也可以通过同样的方式写入

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值