KotlinによるSpring MVCセットアップ

1概要

このクイックチュートリアルでは、Kotlin言語を使用して簡単なSpring MVCプロジェクトを作成するために必要なことを見ていきます。

2 Maven

Maven構成の場合は、以下のhttps://search.maven.org/classic/#search%7Cga%7C1%7Ca%3A%22kotlin-stdlib-jre8%22[Kotlin依存関係]を追加する必要があります。

<dependency>
    <groupId>org.jetbrains.kotlin</groupId>
    <artifactId>kotlin-stdlib-jre8</artifactId>
    <version>1.1.4</version>
</dependency>

次のものも追加する必要があります。 20OR%20a%3A%22spring-webmvc%22)[Springの依存関係]:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>4.3.10.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>4.3.10.RELEASE</version>
</dependency>

コードをコンパイルするには、ソースディレクトリを指定してhttps://search.maven.org/classic/#search%7Cga%7C1%7Cg%3A%22org.jetbrains.kotlin%22%20AND%20a%を設定する必要があります。 3A%22kotlin-maven-plugin%22[Kotlin Mavenプラグイン]、__pom.xmlのビルドセクションにあります。

<plugin>
    <artifactId>kotlin-maven-plugin</artifactId>
    <groupId>org.jetbrains.kotlin</groupId>
    <version>1.1.4</version>
    <executions>
        <execution>
            <id>compile</id>
            <phase>compile</phase>
            <goals>
                <goal>compile</goal>
            </goals>
        </execution>
        <execution>
            <id>test-compile</id>
            <phase>test-compile</phase>
            <goals>
                <goal>test-compile</goal>
            </goals>
        </execution>
    </executions>
</plugin>

3 Spring MVCの設定

Kotlinアノテーション設定かXML設定のどちらかを使うことができます。

3.1. コトリンの設定

アノテーション設定はとても簡単です。 View Controller、テンプレートリゾルバ、およびテンプレートエンジンを設定します。その後、ビューリゾルバを設定するためにそれらを使用することができます。

@EnableWebMvc
@Configuration
open class ApplicationWebConfig : WebMvcConfigurerAdapter(),
  ApplicationContextAware {

    private var applicationContext: ApplicationContext? = null

    override fun setApplicationContext(applicationContext:
      ApplicationContext?) {
        this.applicationContext = applicationContext
    }

    override fun addViewControllers(registry:
      ViewControllerRegistry?) {
        super.addViewControllers(registry)

        registry!!.addViewController("/welcome.html")
    }
    @Bean
    open fun templateResolver(): SpringResourceTemplateResolver {
        return SpringResourceTemplateResolver()
          .apply { prefix = "/WEB-INF/view/" }
          .apply { suffix = ".html"}
          .apply { templateMode = TemplateMode.HTML }
          .apply { setApplicationContext(applicationContext) }
    }

    @Bean
    open fun templateEngine(): SpringTemplateEngine {
        return SpringTemplateEngine()
          .apply { setTemplateResolver(templateResolver()) }
    }

    @Bean
    open fun viewResolver(): ThymeleafViewResolver {
        return ThymeleafViewResolver()
          .apply { templateEngine = templateEngine() }
          .apply { order = 1 }
    }
}

次に、 ServletInitializer クラスを作成しましょう。クラスは AbstractAnnotationConfigDispatcherServletInitializerを拡張する必要があります。これは、従来の web.xml__設定の代わりになります。

class ApplicationWebInitializer:
  AbstractAnnotationConfigDispatcherServletInitializer() {

    override fun getRootConfigClasses(): Array<Class<** >>? {
        return null
    }

    override fun getServletMappings(): Array<String> {
        return arrayOf("/")
    }

    override fun getServletConfigClasses(): Array<Class<** >> {
        return arrayOf(ApplicationWebConfig::class.java)
    }
}

3.2. XML設定

ApplicationWebConfig クラスのXMLと同等のものは、次のとおりです。

<beans xmlns="...">
    <context:component-scan base-package="com.baeldung.kotlin.mvc"/>

    <mvc:view-controller path="/welcome.html"/>

    <mvc:annotation-driven/>

    <bean id="templateResolver"
      class="org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver">
        <property name="prefix" value="/WEB-INF/view/"/>
        <property name="suffix" value=".html"/>
        <property name="templateMode" value="HTML"/>
    </bean>

    <bean id="templateEngine"
          class="org.thymeleaf.spring4.SpringTemplateEngine">
        <property name="templateResolver" ref="templateResolver"/>
    </bean>


    <bean class="org.thymeleaf.spring4.view.ThymeleafViewResolver">
        <property name="templateEngine" ref="templateEngine"/>
        <property name="order" value="1"/>
    </bean>

</beans>

この場合は、 web.xml 設定も指定する必要があります。

<web-app xmlns=...>

    <display-name>Spring Kotlin MVC Application</display-name>

    <servlet>
        <servlet-name>spring-web-mvc</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring-web-config.xml</param-value>
        </init-param>
    </servlet>

    <servlet-mapping>
        <servlet-name>spring-web-mvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

4 HTMLビュー

対応するhtmlリソースは /WEB-INF/view ディレクトリの下にあります。上記のView Controller設定では、基本的なView Controller、 welcome.html を定義しました。対応するリソースの内容は次のとおりです。

<html>
    <head>Welcome</head>

    <body>
        <h1>Body of the welcome view</h1>
    </body>
</html>

5結論

プロジェクトを実行した後、http://localhost:8080/welcome.htmlにある構成済みのウェルカムページにアクセスできます。

この記事では、KotlinとXMLの両方の構成を使用して単純なSpring MVCプロジェクトを構成しました。

完全なソースコードはhttps://github.com/eugenp/tutorials/tree/master/spring-mvc-kotlin[over on GitHub]にあります。