Tuple2
パラメータのタイプを明示的に宣言するfromspring構成を作成できるようにしたいと思います。
<bean class="scala.Tuple2">
<constructor-arg index="0" value="Europe/London" type="java.util.TimeZone" />
<constructor-arg index="1" value="America/New_York" type="java.util.TimeZone" />
</bean>
これは機能しません(構成ファイルで指定された関連するプロパティエディターがあります)。実行時にエラーが発生します:
原因:org.springframework.beans.factory.UnsatisfiedDependencyException:
ファイル[C:\ Work \ myproj \ config \ test \ myproj.xml]で定義された「scala.Tuple2#6504bc」という名前のBeanの作成中にエラーが発生しました:コンストラクターで表現された不満足な依存関係タイプ[java.lang.Object]のインデックス0の引数:
あいまいなコンストラクター引数タイプ-コンストラクター引数として正しいBean参照を指定しましたか?
明示的に宣言しないとエラーはなくなりますがtype
、もちろん、Tuple2
私のプログラムのは、(String, String)
私が望んでいるものではありません。
これを知らなかった人のために編集してください。SpringはPropertyEditor
sを使用して次のように文字列からインスタンスを作成します。
public class TimeZoneEditor extends java.beans.PropertyEditorSupport {
public void setAsText(String text) { setValue(TimeZone.getTimeZone(text)); }
public String getAsText() { return ((TimeZone)getValue()).getID(); }
}
今、私は自分の設定で宣言するだけです:
<bean id="customEditorConfigurer"
class="org.springframework.beans.factory.config.CustomEditorConfigurer">
<property name="customEditors">
<map>
<entry key="java.util.TimeZone">
<bean class="my.cleve.rutil.TimeZoneEditor"/>
</entry>
</map>
</property>
</bean>
そして、ちょっとプレスト私は次のようなことをすることができます:
<map key-type="java.util.TimeZone" value-type="java.lang.Integer">
<entry key="Europe/London" value="4" />
</map>
または、Springはsetterメソッドからジェネリック型パラメーターを把握することもできます。私の場合はうまくいかないようですがTuple2
!