0

所以我正在尝试将 Pebble 模板引擎集成到我的 Spring Boot 应用程序中,但我对如何实现这一点感到困惑。

所以我已经阅读了他们的网站关于如何实现它,但是它说的是 Spring MVC,我认为这与 Spring Boot 不相似。

我还访问了他们的 github 页面,然后尝试将他们的 maven 依赖项添加到 POM.xml,但我不知道我是否会配置某些东西,或者它与自动配置的 Thymeleaf 或 Mustache 相同。

链接到他们的网站: http: //mitchellbosecke.com/pebble/

4

1 回答 1

3

将启动器依赖项添加到您的 pom.xml:

弹簧启动 v1

<dependency>
    <groupId>io.pebbletemplates</groupId>
    <artifactId>pebble-spring-boot-starter</artifactId>
    <version>2.6.2</version>
</dependency>

或者

弹簧启动 v2

<dependency>
    <groupId>io.pebbletemplates</groupId>
    <artifactId>pebble-spring-boot-2-starter</artifactId>
    <version>2.6.2</version>
</dependency>

这足以启动自动配置。这包括:

  • 一个加载器,它将选择以类路径上的 dir 结尾的.pebble模板/templates/文件
  • 具有默认设置的 PebbleEngine,使用之前的加载程序配置
  • 将输出的text/htmlViewResolverUTF-8

请注意:启动器依赖于spring-boot-starter-web但被标记为可选,您需要自己添加依赖项或适当地配置 Spring MVC。

引导外部化配置

在 Spring Boot 外部化配置中可以定义许多属性,例如。application.properties,以前缀开头pebble。请参阅相应的PebbleProperties.java以了解您的入门版本。值得注意的属性是:

  • pebble.prefix: 定义将添加到 mvc 视图名称之前的前缀。默认为/templates/
  • pebble.suffix: 定义将附加到 mvc 视图名称的后缀。默认为.pebble
  • pebble.cache:启用或禁用 PebbleEngine 缓存。默认为true
  • pebble.contentType:定义将用于配置 ViewResolver 的内容类型。默认为text/html
  • pebble.encoding:定义将用于配置 ViewResolver 的文本编码。默认为UTF-8
  • pebble.exposeRequestAttributes:定义在与 ViewResolver 的模板合并之前是否应将所有请求属性添加到模型中。默认为false
  • pebble.exposeSessionAttributes:定义在与 ViewResolver 的模板合并之前是否应将所有会话属性添加到模型中。默认为false
  • pebble.defaultLocale: 定义将用于配置 PebbleEngine 的默认语言环境。默认为null
  • pebble.strictVariables:启用或禁用 PebbleEngine 中的严格变量检查。默认为false

自定义 Pebble

Pebble 扩展

定义为 bean 的扩展将被自动拾取并添加到 PebbleEngine:

@Bean
public Extension myPebbleExtension1() {
    return new MyPebbleExtension1();
}

@Bean
public Extension myPebbleExtension2() {
    return new MyPebbleExtension2();
}

警告:如果它们分散在多个 @Configuration 类中,Spring 将不会收集所有 bean。如果使用此机制,请将所有扩展 @Bean 捆绑在单个 @Configuration 类中。

自定义加载器

pebbleLoader自动配置器查找在上下文中命名的 bean 。您可以使用该名称定义自定义加载器,它将用于配置默认的 PebbleEngine:

@Bean
public Loader<?> pebbleLoader() {
    return new MyCustomLoader();
}

请注意:配置 ViewResolver 时,此加载程序的前缀和后缀都将被覆盖。您应该使用外部化配置来更改这些属性。

自定义 PebbleEngine

同样,您可以构建自定义引擎并使用 bean name 将其设为默认引擎pebbleEngine

@Bean
public PebbleEngine pebbleEngine() {
    return new PebbleEngine.Builder().build();
}

自定义 ViewResolver

ViewResolver 也是如此,使用 bean 名称pebbleViewResolver

@Bean
public PebbleViewResolver pebbleViewResolver() {
    return new PebbleViewResolver();
}

请注意:您需要更改 Loader 的前缀和后缀以匹配自定义 ViewResolver 的值。

将 Pebble 用于其他任务

该启动器的主要作用是配置 Pebble 以生成 MVC 视图结果(典型的 HTML)。您可以为其他使用模式(例如生成电子邮件正文)定义更多 PebbleEngine/Loader bean。请记住,您不应为其他 Engine 实例重用默认 Loader。

于 2018-07-02T12:37:55.270 回答