将Pebble模板引擎与Spring Boot一起使用



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

所以我已经通读了他们的网站,了解如何实现它,但它说的是Spring MVC,我认为这与Spring Boot不同。

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

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

将初学者依赖项添加到您的 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>

这足以让自动配置发挥作用。这包括:

  • 一个加载器,它将从类路径上的目录中选取以.pebble结尾/templates/模板文件
  • 具有默认设置的 PebbleEngine,使用以前的加载器进行配置
  • 一个视图解析器,它将以UTF-8输出text/html

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

引导外部化配置

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

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

定制卵石

卵石扩展

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

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

警告:如果豆子分散在多个@Configuration类中,春天不会收集所有的豆子。如果使用此机制,请将所有扩展@Beans捆绑在单个@Configuration类中。

自定义加载程序

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

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

请注意:配置视图解析器时,此加载器的前缀和后缀将被覆盖。应使用外部化配置来更改这些属性。

自定义 PebbleEngine

同样,您可以构建自定义引擎,并使用 Bean 名称pebbleEngine使其成为默认引擎:

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

自定义视解析程序

视图解析器也是如此,使用 Bean 名称pebbleViewResolver

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

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

使用 Pebble 完成其他任务

这个启动器的主要作用是配置 Pebble 以生成 MVC 视图结果(典型的 HTML(。您可以为其他使用模式(如生成电子邮件正文(定义更多的 PebbleEngine/Loader bean。请注意,您不应为其他引擎实例重复使用默认加载程序。

最新更新