kotlinを用いてspring bootアプリケーションを開発する
1.Kotlinのメリット Kotlinは静的タイプの言語ですが、巧みなタイプ推定のため、動的言語と同じように短く表現力に富んだコードを書くことができ、純粋なJavaプロジェクト に近い表現ができます.プロパティ(properties)は をサポートします.他の言語と比較して比較的軽量な標準ライブラリ 簡単学習:Java開発者は大部分の言語 を迅速に理解できます. Javaと相互運用可能 Android開発(すでにグーグルアンドロイド公式指定開発言語となっている) に適している内蔵の可変性と空のポインタの安全なサポート コードは読みやすく、効率的に を記述します.では、クラスを継承する必要がなく、既存のライブラリを拡張したり、Decorator のような設計モードを使用したりすることができます.文末にセミコロンは必要ありません.
Kotlin disget 2015のブログでは、Kotlinを知るのに役立つ多くの情報を見つけることができます.また、kotlinでオンラインでKotlin言語を練習することもできます.
2.Spring Boot+Kotlinプロジェクト
Kotlinでは、非常に短い定義(data class)を使用してエンティティークラスを宣言できます.パラメータでは、デフォルト値を指定できます.パラメータタイプは、パラメータの後に与えられます.には、 関数が単文式を返し、括弧を書かずに直接関数 Javaでは、関数はクラスに依存する必要がありますが、Kotlinではトップレベルの関数をサポートできます.したがって、上記のように Kotlinではクラスとメソッドがfinalとしてデフォルト設定されており、継承/上書きは許可されていません.必要に応じてopen修飾子を追加します.
3.追加の説明配列注記属性はJavaのように 属性注入問題 Jacksonを使用する問題Jacksonを使用している場合は、
4. demo
github:mongo+kotlinケース
Kotlin disget 2015のブログでは、Kotlinを知るのに役立つ多くの情報を見つけることができます.また、kotlinでオンラインでKotlin言語を練習することもできます.
2.Spring Boot+Kotlinプロジェクト
Kotlinでは、非常に短い定義(data class)を使用してエンティティークラスを宣言できます.パラメータでは、デフォルト値を指定できます.パラメータタイプは、パラメータの後に与えられます.
@Entity
data class Customer(
var firstName: String = "",
var lastName: String = "",
@Id @GeneratedValue(strategy = GenerationType.AUTO)
var id: Long = 0
)
data class
の後に続くのは、一般的なクラスのカッコではなく、カッコであることに注意してください.@RestController
class CustomerController (val repository:CustomerRepository) {
@GetMapping("/")
fun findAll() = repository.findAll()
@GetMapping("/{name}")
fun findByLastName(@PathVariable name:String)
= repository.findByLastName(name)
}
Spring MVC REST controller
が構造関数レベルの注入方式を採用しており、kotlinのデフォルトクラスはpublic(javaはprotect)として表示されるため、特に指定する必要はありません.=
に式を譲ることができる場合、戻りタイプはKotlinによって自動的に推定されます.interface CustomerRepository : CrudRepository<Customer, Long> {
fun findByLastName(name: String): List<Customer>
}
Spring Data repository
を定義するのも簡単です.@SpringBootApplication
open class Application {
@Bean
open fun init(repository: CustomerRepository) = CommandLineRunner {
repository.save(Customer("Jack", "Bauer"))
repository.save(Customer("Chloe", "O'Brian"))
repository.save(Customer("Kim", "Bauer"))
repository.save(Customer("David", "Palmer"))
repository.save(Customer("Michelle", "Dessler"))
}
}
fun main(args: Array<String>) {
SpringApplication.run(Application::class.java, *args)
}
Spring Boot
エントリクラスを宣言することができます.3.追加の説明
// java
@RequestMapping(method = RequestMethod.GET)
// kotlin
@RequestMapping(method = arrayOf(RequestMethod.GET))
ではありませんがkotlin 1.1改善されたので、このissueを見ることができます.var name = "cmx";
var hello = "My name is ${name}";
@Value("\${some.property}")
kotlinでは、$ドル記号が文字列補間に使用されるため、@Value
属性注入の場合、$の前に\
を追加してエスケープするか、@ConfigurationProperties
の代わりに使用する必要があります.com.fasterxml.jackson.module:jackson-module-kotlin
の依存関係を追加して、デフォルトのコンストラクタまたはKotlinセットのないデータクラスを処理できるようにする必要があります.Spring Framework 4.3+
に自動登録されています.4. demo
github:mongo+kotlinケース