weblog

技術的なメモ置き場。

Kotlin

CommandLineRunnerでの初期化

Spring BootでCommandLineRunnerを使うと、起動時に初期化処理を実行することができる @Bean fun run(): CommandLineRunner { return CommandLineRunner { // 何らかの処理 } } @Component class Hoge : CommandLineRunner { override fun run(vararg args: …

Kotlinでdataクラスのマッピング

Kotlinでdataクラスのマッピングするためのメモ。 Beanマッピングでおなじみの(?)MapStructを使用する。 Kotlin: 1.3.61 MapStruct: 1.3.1.Final MapStruct 公式サイトにKotlinのサンプルがある。 github.com build.gradleに以下を追加する。 dependencie…

Micronaut + Thymeleaf を試す

Micronaut: 1.2.2 Thymeleaf: 3.0.11.RELEASE 適当なディレクトリでMicronautアプリを生成。 $ mn create-app -f kotlin -i dependenciesにmicronaut-viewsとThymeleafを追加。 build.gradle implementation "io.micronaut:micronaut-views" runtimeOnly "or…

Micronaut + Kotlin + DomaでTransactionを楽に扱う

前回の内容だとTransactionの扱いが面倒なので、 MethodInterceptorを使って楽をできるようにする。 kentama.hatenablog.com アノテーションの用意 @MustBeDocumented @Retention(AnnotationRetention.RUNTIME) @Target(AnnotationTarget.CLASS, AnnotationT…

Micronaut + Kotlin + Doma + HikariCP を試す

前回の内容にHikariCPを適用してみる。 kentama.hatenablog.com HikariCPの設定 build.gradleに以下を追加する。 dependencies { // 省略 runtimeOnly 'io.micronaut.configuration:micronaut-jdbc-hikari' } application.ymlに以下を追加する。 datasources…

Micronaut + Kotlin + Doma を試す

MicronautでDomaを試したときのメモ。 環境は以下の通り。 Micronaut: 1.2.0 Kotlin: 1.3.50 Doma: 2.25.1 PostgreSQL: 11.4 Micronautアプリの用意 適当なディレクトリにKotlinのMicronautアプリを作成する。 $ mn create-app -f kotlin -i build.gradleの…

Micronautでホットリロード

Micronautでホットリロードするメモ 環境 macOS 10.14.5 Kotlin 1.3.21 Micronaut 1.1.3 build.gradleに以下を追加する。 dependencies { ... developmentOnly "io.micronaut:micronaut-runtime-osx" developmentOnly "net.java.dev.jna:jna" developmentOnl…

アプリケーション設定ファイルの設定値の取得

Spring Bootでアプリケーション設定ファイル(application.propertiesやyml)の設定値を取得するには org.springframework.core.env.StandardEnvironment を使用する。 例 @RestController class HogeRestController(private val environment: StandardEnvir…

Imgタグに表示する画像をByte配列で返す

Kotlin Spring Boot 2.0.4 Thymeleaf Spring Bootで、Imgタグに表示する画像をByte配列を返すには、ResponseEntityを使用する。 Controllerの実装 @GetMapping("image") fun image(): ResponseEntity<ByteArray> { val bytes = .. // 画像のByte配列を取得 return Respo</bytearray>…