Spring MVCでThymeleafを導入する設定方法

spring

あまり需要はないかもしれませんが、Spring MVCでThymeleafを設定する方法を紹介していきます。

Spring BootだとThymeleafのテンプレートファイルは、resources/templatesフォルダをデフォルトの読み込み先としていますが、Spring MVCでおなじみにwebapp/WEB-INF/へ変更する方法をメインに紹介していきます。

[スポンサーリンク]

dependency

Spring MVCでThymeleafを使うためのdependencyはこちらです。

<dependency>
    <groupId>org.thymeleaf</groupId>
    <artifactId>thymeleaf-spring4</artifactId>
</dependency>

Thymeleafを使ったHTML

設置場所は、main/webapp/WEB-INF/templatesの下に置いておきましょう。

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<body>
  <p>Hello, thymeleaf!</p>
</body>
</html>

Controllerを作成する

ここは省略します。

先程作ったHTMLが表示するコントローラクラスを作ります。

作り方はおまかせです。いつものやつで作って下さい。

Thymeleafの設定を行う

さて、ここからが本題です。

Spring MVCでThymeleafの設定を変更する方法を紹介していきます。

HTMLファイルの参照フォルダを変更するのもこの部分で変更していきます。

ThymeleafConfig

ではまず、Thymeleafの設定を変更するConfigクラスを作っていきます。

ハイライトの部分でHTMLファイルを格納するためのフォルダを指定しています。こちらの指定で、main/webapp/WEB-INF/templatesを参照するようになります。

@Configuration
public class ThymeleafConfig {

    @Bean
    public SpringResourceTemplateResolver templateResolver() {
        SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver();
        resolver.setPrefix("/WEB-INF/templates/");
        resolver.setSuffix(".html");
        resolver.setTemplateMode("HTML5");
        return resolver;
    }

    @Bean
    public SpringTemplateEngine templateEngine() {
        SpringTemplateEngine engine = new SpringTemplateEngine();
        engine.setTemplateResolver(templateResolver());
        return engine;
    }

    @Bean
    public ThymeleafViewResolver thymeleafViewResolver() {
        ThymeleafViewResolver resolver = new ThymeleafViewResolver();
        resolver.setTemplateEngine(templateEngine());
        resolver.setCharacterEncoding("UTF-8");
        resolver.setOrder(1);
        return resolver;
    }
}

WebMvcConfig

先程のConfigクラスだけでは不十分なので、Spring MVC起動時に読み込む設定クラスを作成していきます。

@Importで先程作成したConfigクラスを指定していきます。

@Configuration
@EnableWebMvc
@ComponentScan("jp.co.example")
@Import(ThymeleafConfig.class)
public class WebMvcConfig extends WebMvcConfigurerAdapter {
    
}

こちらのクラスが作り終われば設定は完了です。

あとはSpring MVCのプロジェクトを起動すれば、コントローラへアクセスしてHTMLファイルを表示することができるようになります。

サンプルソース

上記のロジックはコチラのGitHubで公開しています。

バージョン

Spring Bootのバージョンは、1.5.2です。
Javaは8を使っています。

さいごに

Spring Bootを使う場面が多く、Spring MVC時代のお馴染みのwebapp/WEB-INF/フォルダを見ることが本当に少なくなってしまいました。

このブログを書きながらも、これって需要あるのかな?と疑問には思うのですが、せっかく調べたので備忘録として残しておこうと思い書いてみました。

いつかこのブログが役立つことがあればよいですね。

それでは!