You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot 2.x生成动态内容文本文件的最佳模板引擎选型及入门指引

生成动态文本文件:Spring Boot 2.x 框架选择与入门指南

框架选择

Apache Freemarker是你的最优选择。别被多数教程侧重Web场景的内容误导,Freemarker本质是通用模板引擎,对纯文本、CSV、配置文件等非标记语言的支持非常完善,语法简洁灵活,处理动态变量的逻辑也直观。相比之下,Velocity也能实现文本生成,但Freemarker在Spring生态中的集成更顺畅,官方文档对非Web场景的覆盖也更清晰。

Spring Boot 2.x 入门步骤

1. 引入依赖

如果用Maven,在pom.xml中添加Freemarker starter:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>

Gradle项目则在build.gradle中加入:

implementation 'org.springframework.boot:spring-boot-starter-freemarker'

2. 配置模板路径(可选)

Freemarker默认会读取src/main/resources/templates下的模板文件。若想单独存放纯文本模板,可在application.properties中调整:

# 指定模板根路径
spring.freemarker.template-loader-path=classpath:/templates/text/
# 模板文件后缀,纯文本也用.ftl即可
spring.freemarker.suffix=.ftl

3. 创建文本模板

在模板路径下新建greeting.ftl,写入带动态变量的文本:

Hello ${name}, how are you?

这里${name}就是你需要替换的动态变量占位符。

4. 编写渲染逻辑

创建一个Service类,通过Spring注入的Configuration加载模板并填充变量:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import freemarker.template.Configuration;
import freemarker.template.Template;
import java.io.StringWriter;
import java.util.HashMap;
import java.util.Map;

@Service
public class TextGeneratorService {

    private final Configuration freemarkerConfig;

    @Autowired
    public TextGeneratorService(Configuration freemarkerConfig) {
        this.freemarkerConfig = freemarkerConfig;
    }

    public String generateGreeting(String name) throws Exception {
        // 加载模板
        Template template = freemarkerConfig.getTemplate("greeting.ftl");
        // 构造数据模型
        Map<String, Object> dataModel = new HashMap<>();
        dataModel.put("name", name);
        
        // 渲染模板到字符串
        StringWriter writer = new StringWriter();
        template.process(dataModel, writer);
        return writer.toString();
    }
}

5. 测试使用

在Controller或测试类中调用Service生成文本:

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class GreetingController {

    private final TextGeneratorService textGeneratorService;

    public GreetingController(TextGeneratorService textGeneratorService) {
        this.textGeneratorService = textGeneratorService;
    }

    @GetMapping("/greet/{name}")
    public String getGreeting(@PathVariable String name) {
        try {
            return textGeneratorService.generateGreeting(name);
        } catch (Exception e) {
            return "生成问候语失败: " + e.getMessage();
        }
    }
}

启动应用后访问http://localhost:8080/greet/Anirban,就能得到Hello Anirban, how are you?的文本响应。

额外提示

  • 若要生成本地文件,只需把StringWriter换成FileWriter,指定目标文件路径即可。
  • Freemarker支持条件判断、循环等复杂逻辑,比如生成带列表的文本时,可在模板中使用<#if>、<#list>指令。

内容的提问来源于stack exchange,提问作者Anirban

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 07:15:05