JodaTimeで動作するようにlambdajを構成する際に問題があります。は最終クラスであるためLocalDate
、Lambdajは次のように初期化する必要があります:(バグ70を参照)
public class LocalDateArgumentCreator implements FinalClassArgumentCreator<LocalDate> {
private final long MSECS_IN_DAY = 1000L * 60L * 60L * 24L;
public LocalDate createArgumentPlaceHolder(int seed) {
return new LocalDate((long)seed * MSECS_IN_DAY);
}
}
ArgumentsFactory.registerFinalClassArgumentCreator(LocalDate.class, new LocalDateArgumentCreator());
この構成を事実上すべての場所に適用する必要があるため、これを実装する方法に関するオプションが不足しています。私たちのアプリケーションは、SpringとWicketをベースにしたWebアプリケーションです。
私は3つの異なるオプションを考え出しました:
1.コアMavenモジュールの静的初期化ブロック
コアモジュールは他のすべてのモジュールに含まれているため、すべてのモジュールにクラスが含まれます。残りの質問は、ターゲットクラスへの参照がない場合でも、静的ブロックは常に初期化されるのでしょうか。
例
public final class LambdajInitializer {
static {
// initialize like above
}
}
2.初期化中のBeanapplicationContext.xml
欠点:Spring以外のテストでは初期化されません
例:applicationContext-core.xml(すべてのモジュールに含まれています)
<bean class="...LambdajInitializer" />
public class LambdajInitializer {
@PostConstruct
public void init() {
// Lambdaj initialization
}
}
3.Wicketアプリケーションクラスの初期化メソッドの呼び出し
欠点:Webモジュールの外部で初期化されることはありません
public class MyApplication extends WebApplication {
@Override
public void init() {
...
// Lambdaj initialization
...
}
}
私の質問は:これを達成するための好ましい方法はどれですか?