👌
Spring BootでThymeleafのDialectを追加する方法
環境
Spring Boot 2.0
デフォルトで使えるDialect
- Java8TimeDialect
spring-boot-starter-thymeleafの依存性として入っていて、かつAuto Configurationクラス内で追加されているので、何もしないでも使うことができます。
依存性を追加するだけでOKなDialect
- SpringSecurityDialect
- LayoutDialect
- DataAttributeDialect
上記の3つはAuto Configuration対象になっているため、依存性を追加するだけで使うことが出来ます。
ここらへんを読んでみてください。
その他のDialect(自作のDialectなど)
上記以外のDialectについては、適当にJava Configクラスを作成してDialectをBean定義すればOKです。
@Configuration
public class ThymeleafDialectConfig {
@Bean
public FooDialect fooDialect() {
return new FooDialect();
}
@Bean
public BarDialect barDialect() {
return new BarDialect();
}
}
Bean定義すれば、Auto Configurationクラスによって使われます。
やってはいけなくはないけど・・・
SpringTemplateEngine
を自分でBean定義してもいいのですが、Auto Configurationクラスで定義している SpringTemplateEngine
のBeanが無効化されてしまいますので、なるべくやらないようにしましょう。
これはなるべくしない
@Configuration
public class ThymeleafDialectConfig {
@Bean
public SpringTemplateEngine templateEngine() {
SpringTemplateEngine engine = new SpringTemplateEngine();
...
engine.addDialect(new SpringSecurityDialect());
engine.addDialect(new LayoutDialect());
engine.addDialect(new DataAttributeDialect());
engine.addDialect(new FooDialect());
engine.addDialect(new BarDialect());
return engine;
}
}
Discussion