LoginSignup
8
6

More than 5 years have passed since last update.

Kotlin で Spring アプリを書くときの open が嫌だ

Last updated at Posted at 2017-02-06

Kotlin では、とくに修飾子を付けない場合、クラスやメソッドは final になります。これを Spring と組み合わせた場合、Proxy などを適用するにあたって相性が良くない。

そこで、open という修飾子を使って final になるのを回避するわけですが、せっかく Kotlin のおかげで簡潔になったはずのコードに、こういった一手間を加えてしまうというのは、好ましくないです。

こういった場合にどうしたら良いか、というのがこのポストです。

環境

  • Oracle Java 1.8.0_121
  • Maven 3.3.9 (Maven Wrapper)
  • Kotlin 1.0.6
  • Spring Boot 1.4.3.RELEASE
$ ./mvnw -version
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T01:41:47+09:00)
Maven home: /Users/yo1000/.m2/wrapper/dists/apache-maven-3.3.9-bin/2609u9g41na2l7ogackmif6fj2/apache-maven-3.3.9
Java version: 1.8.0_121, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre
Default locale: ja_JP, platform encoding: UTF-8
OS name: "mac os x", version: "10.12", arch: "x86_64", family: "mac"

対応

build plugin に、spring の設定を追加するだけです。

pom.xml (一部抜粋)
<plugin>
    <artifactId>kotlin-maven-plugin</artifactId>
    <groupId>org.jetbrains.kotlin</groupId>
    <version>${kotlin.version}</version>
    <configuration>
        <compilerPlugins>
            <plugin>spring</plugin>
        </compilerPlugins>
    </configuration>
    <!-- .. -->
</plugin>

これで open を付けずとも Kotlin で、問題なく Spring を扱えるようになります。

また、Spring Initializr で、使用言語に Kotlin を選択した場合も、依存関係に、これが自動で追加されるようになっているので、こちらも併せて利用してみるとよいかと思います。

8
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6