こちらの先月の記事に続き、
放置してしまっていた orika-spring-boot-starter もアップデートしました。

yaml-resource-bundle を Kotlin で書き直した

今回も Kotlin で全て書き直しました。

orika-spring-boot-starter とは

Java フレームワーク Spring Boot の拡張ライブラリです。
Orika (Java Bean マッピングライブラリ) を自動で DI コンテナに組み込み、使いやすくします。
Spring Boot アプリケーションプロパティや、ユーザ実装の設定クラスで、動作を設定できます。

akkinoc/orika-spring-boot-starter - GitHub

Kotlin で書き直しましたが、 Java からも使えます。

使い方

依存関係を追加して、

<dependency>
  <groupId>dev.akkinoc.spring.boot</groupId>
  <artifactId>orika-spring-boot-starter</artifactId>
  <version>2.0.0</version>
</dependency>

Orika の MapperFacade を注入すれば、

import ma.glasnost.orika.MapperFacade;
@Autowired
private MapperFacade orikaMapperFacade;

MapperFacade でマッピング処理を呼び出せます。

PersonSource src = new PersonSource("John", "Smith", 23);
System.out.println(src);   // => "PersonSource(firstName=John, lastName=Smith, age=23)"
PersonDestination dest = orikaMapperFacade.map(src, PersonDestination.class);
System.out.println(dest);  // => "PersonDestination(givenName=John, sirName=Smith, age=23)"

細かなマッピングの設定は、 OrikaMapperFactoryConfigurer を継承して
@Component で Spring コンテナに登録すれば OK です。

import dev.akkinoc.spring.boot.orika.OrikaMapperFactoryConfigurer;
import ma.glasnost.orika.MapperFactory;

@Component
public class PersonMapping implements OrikaMapperFactoryConfigurer {
  @Override
  public void configure(MapperFactory orikaMapperFactory) {
    orikaMapperFactory.classMap(PersonSource.class, PersonDestination.class)
      .field("firstName", "givenName")
      .field("lastName", "sirName")
      .byDefault()
      .register();
  }
}

今回アップデートしたこと

  • Kotlin で書き直した
  • Maven Group ID と Java パッケージを変更
  • @Bean Lite Mode (@Configuration(proxyBeanMethods = false)) を使ってみた
  • Kotlin らしくテストに Kotest を導入
  • CI を CircleCI から GitHub Actions へ移行
  • 他, 依存関係の更新とバグ修正