So I'm trying to integrate Pebble templating engine to my spring boot application but I'm confused on how to implement this.
So I've read through their site on how to implement it however it says for Spring MVC which I think not similar with Spring Boot.
I also go to their github page then trying to add their maven dependency to POM.xml but I don't know if I will configure something or it is the same as Thymeleaf or Mustache that are autoconfigured.
Link to their site: http://mitchellbosecke.com/pebble/
Add the starter dependency to your pom.xml:
spring-boot v1
OR
spring-boot v2
This is enough for autoconfiguration to kick in. This includes:
.pebble
from/templates/
dir on the classpathtext/html
inUTF-8
PLEASE NOTE: the starter depends on
spring-boot-starter-web
but is marked as optional, you'll need to add the dependency yourself or configure Spring MVC appropiately.Boot externalized configuration
A number of properties can be defined in Spring Boot externalized configuration, eg.
application.properties
, starting with the prefixpebble
. See the corresponding PebbleProperties.java for your starter version. Notable properties are:pebble.prefix
: defines the prefix that will be prepended to the mvc view name. Defaults to/templates/
pebble.suffix
: defines the suffix that will be appended to the mvc view name. Defaults to.pebble
pebble.cache
: enables or disables PebbleEngine caches. Defaults totrue
pebble.contentType
: defines the content type that will be used to configure the ViewResolver. Defaults totext/html
pebble.encoding
: defines the text encoding that will be used to configure the ViewResolver. Defaults toUTF-8
pebble.exposeRequestAttributes
: defines whether all request attributes should be added to the model prior to merging with the template for the ViewResolver. Defaults tofalse
pebble.exposeSessionAttributes
: defines whether all session attributes should be added to the model prior to merging with the template for the ViewResolver. Defaults tofalse
pebble.defaultLocale
: defines the default locale that will be used to configure the PebbleEngine. Defaults tonull
pebble.strictVariables
: enable or disable the strict variable checking in the PebbleEngine. Defaults tofalse
Customizing Pebble
Pebble extensions
Extensions defined as beans will be picked up and added to the PebbleEngine automatically:
CAVEAT: Spring will not gather all the beans if they're scattered across multiple @Configuration classes. If you use this mechanism, bundle all Extension @Beans in a single @Configuration class.
Customizing the Loader
The autoconfigurer looks for a bean named
pebbleLoader
in the context. You can define a custom loader with that name and it will be used to configure the default PebbleEngine:PLEASE NOTE: this loader's prefix and suffix will be both overwritten when the ViewResolver is configured. You should use the externalized configuration for changing these properties.
Customizing the PebbleEngine
Likewise, you can build a custom engine and make it the default by using the bean name
pebbleEngine
:Customizing the ViewResolver
And the same goes for the ViewResolver, using the bean name
pebbleViewResolver
:PLEASE NOTE: you need to change the Loader's prefix and suffix to match the custom ViewResolver's values.
Using Pebble for other tasks
The main role of this starter is to configure Pebble for generating MVC View results (the typical HTML). You may define more PebbleEngine/Loader beans for other usage patterns (like generating email bodies). Bear in mind that you should not reuse the default Loader for other Engine instances.