私が書いた WebService で Spring 3 IOC と JAXB/JAX-WS を使用しています。値の完全な精度を処理できないため、消費者に返す前に丸めなければならないデータで、現在わずかな問題が発生しています。
WS の設計と計算への影響を最小限に抑えるために、Jaxb XmlAdapter を使用して、応答のマーシャリング時に値を丸めることにしました。すべて正常に動作します。
私の今の問題は、それを柔軟にしたいということです。つまり、場合によっては、小数点以下 2 桁、4 桁などに丸める必要があります。現在、TwoDecimalAdapter と FourDecimalAdapter を作成し、モデル定義で必要に応じて適切なものを使用する必要があります。これは、コードの重複を意味します。
一般的な Rounding Adapter を作成し、それにパラメーターを渡す方法はありますか? たとえば、次の代わりに:
@javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter(value=FourDecimalRoundingAdapter.class,type=java.math.BigDecimal.class)
次のようなことができるようになりたいです。
@javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter(value=new RoundingAdapter(4),type=java.math.BigDecimal.class)
明らかに、JAXB はアダプター自体をインスタンス化するため、これは機能しませんが、パラメーターをアダプターに渡すために使用できる手法はありますか? Spring で丸めアダプターを宣言してそのように使用できるようにしたいのですが、再利用可能なソリューションを考案することはできません。
ありがとう、
エリック