freemarker + spring配置和最简单的例子

Myk*_*ych 11 java spring freemarker

尽管围绕freemarker + spring进行了很多讨论,但很难找到复制和运行的简洁工作示例.
您能否在spring xml上下文中提供最简单的freemarker工作配置和java代码片段,以便从资源文件中加载模板并对其进行处理.

Myk*_*ych 19

的pom.xml

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
</dependency>
<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)

applicationContext.xml中

<bean id="freeMarkerConfigurationFactory" class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean">
    <property name="templateLoaderPath" value="classpath:/META-INF/freemarker"/>
    <property name="preferFileSystemAccess" value="false"/>
</bean>
Run Code Online (Sandbox Code Playgroud)

AlertMailComposer.java

import static org.springframework.ui.freemarker.FreeMarkerTemplateUtils.processTemplateIntoString;

@Component
public class AlertMailComposer implements Processor {

    public static final String TEMPLATE = "AlertMail.ftl";

    @Autowired
    private Configuration freemarkerConfiguration;

    protected String composeHtml(Alert alert) throws IOException, TemplateException {
        return processTemplateIntoString(freemarkerConfiguration.getTemplate(TEMPLATE), ImmutableMap.of(
                "alertType", alert.getAlertType(),
                "message", alert.getMessage(),
                "nodeName", alert.getEvent().getNodeName(),
                "event", toJson(alert.getEvent(), true)
        ));
    }
...
Run Code Online (Sandbox Code Playgroud)

AlertMail.ftl

<html>
<body style="font-family:verdana;font-size:10">
    <b>${alertType}: </b>${message}<br>
    <b>on: </b>${nodeName}<br>
    <p/>
    <pre style="font-family:verdana;font-size:10;color:grey">
${event}
    </pre>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)