没有从 Freemarker 模板读取文件之类的东西。您需要像往常一样在 Java 中读取文件,然后将变量放入 Freemarker 模板模型。
这将是一个在应用程序启动时读取配置文件的好主意。我认为您的 .cfg 格式与标准 .property 文件格式兼容。因此,您应该能够使用以下代码读取它(假设配置文件在运行时位于类路径中):
Properties configProp = new Properties();
try (InputStream input = this.getClass().getClassLoader().getResourceAsStream("config.cfg")) {
configProp.load(input);
}
String server = configProp.getProperty("server"); // "localhost"
String username = configProp.getProperty("username"); // "admin"
String password = configProp.getProperty("password"); // "somepassword"
现在你有了你的变量。
至于 Freemarker,这取决于您如何使用它。无论哪种方式,您都需要将变量放入模板模型。
这是一个 Java API 示例:
Map<String, Object> model = new HashMap<>();
model.put("server", server);
model.put("username", username);
model.put("password", password);
Template temp = freemarkerConfig.getTemplate("test.ftl"); // freemarkerConfig is created elsewhere
Writer out = new OutputStreamWriter(System.out);
temp.process(model, out);
如果是 Spring MVC,以类似的方式将变量放入控制器视图 Model 或 ModelAndView。
测试.ftl:
server: ${server}
username: ${username}
password: ${password}