Blog

Pitaliumの設定周りの実装

Last modified by nakatani on 2017/03/08, 14:43

概要

Pitaliumの設定を扱うクラスはEnvironmentConfigTestAppConfigPersisterConfigがあります。そしてこれらの設定データクラスに対応するJSONファイルを記述することでPitaliumの動作を実行時に変更することができます。  
Pitaliumは設定クラスの判別やデータの反映に専用のアノテーションを使用しています。本記事では設定関連のアノテーションの種類と役割、利用方法について解説します。

アノテーション

@PtlConfiguration

@PtlConfigurationは設定データクラスとして使用するクラスに付加するアノテーションです。このアノテーションが付加されているクラスをPtlTestConfigから呼び出すことができます。@PtlConfigurationのプロパティを設定すると設定データとなるJSONファイルの名前をJVMの起動引数で変更する場合の引数名や、JSONファイルのデフォルトのファイル名が変更できます。なお、@PtlConfigurationを付加するクラスはデフォルトコンストラクタが必須、という制限があります。

 プロパティ名  説明  デフォルト値 
 argumentName  JVM起動引数でJSONファイルを変更する場合の引数名。
 使用する場合プレフィックスに com.htmlhifive.pitalium. が必要。 
 クラス名のlowerCamelCase 
 defaultFileName  JSONファイルのデフォルトのファイル名。  クラス名のlowerCamelCase + ".json" 
@PtlConfiguration
public class SampleConfig {

   private String property0;

}

// 使用する場合
SampleConfig config = PtlTestConfig.getInstance().getConfig(SampleConfig.class);

@PtlConfigurationProperty

@PtlConfigurationPropertyは設定データクラスのフィールドに付加するアノテーションです。このアノテーションが付加されたフィールドはJVM起動引数でJSONファイルから読み込んだデータを上書きます。String、int、double、Enum のフィールドにのみ使用できます。上書きが必要ない場合このアノテーションは不要です。  
Pitaliumではこのアノテーションは EnvironmentConfig#execMode にのみ付加しています。

 プロパティ名  説明 
 value  JVM起動引数でJSONファイルを変更する場合の引数名。
 使用する場合プレフィックスに com.htmlhifive.pitalium. が必要。
@PtlConfiguration
public class SampleConfig {

   // JVM起動引数で上書きが可能なプロパティ
   @PtlConfigurationProperty("sampleProp0")
   private String property0;

   // JVM起動引数から上書きできないプロパティ
   private String property1;

}

PtlTestConfig

PtlTestConfigは設定データクラスを管理するシングルトンクラスです。設定データクラスのJSONファイルからの読み込みやJVM起動引数からの上書き、読み込んだデータのキャッシュを担当します。

メソッド

getConfig(Class, String)

getConfigはPtlTestConfigで設定データクラスを呼び出す、またはキャッシュされている設定データクラスを取得するメソッドです。第一引数は取得するデータクラスのクラス型を、第二引数は設定データクラスをキャッシュするためのキーを指定します。

loadConfig(Class, String, String)

loadConfigは設定データクラスをJSONファイルから読み込むメソッドです。第一引数は取得するデータクラスのクラス型を、第二引数は読み込むJSONファイルのファイル名を、第三引数はデフォルトのJSONファイル名を指定します。

fillConfigProperties(Object, Map<String, String>)

fillConfigPropertiesはloadConfigで読み込んだ設定データクラスに対して、@PtlConfigurationPropertyが設定されているフィールドの値をJVM起動引数から上書きするメソッドです。第一引数は読み込んだデータクラスオブジェクトを、第二引数はJVM起動引数の一覧を設定します。

convertFromString(Class, String)

convertFromStringはfillConfigPropertiesでJVM起動引数からフィールド値を上書きする際に呼び出されるメソッドです。StringをString、int、double、Enumに変換します。


Copyright (C) 2012-2017 NS Solutions Corporation, All Rights Reserved.