2

xjcからJavaクラスを生成するために使用していXSDます。結果のクラスには、コレクション型 ( など) の getter メソッドのみが含まれますListが、setter メソッドは含まれません。これらの生成されたクラスを 内で Bean として使用するにはどうすればよいですか。Spring Frameworkつまり、これらのフィールドにapplicationContext.xmlからのデータを入力する方法を教えてください。

「duffymo」と「fatih」への返信として: 実際には、Spring にJAXB ObjectFactoryとそのファクトリ メソッドを使用して Bean を作成するように指示できます。

<bean id="myFactory" class="generated.ObjectFactory" />
<bean id="myBean" factory-bean="myFactory" factory-method="createMyBeanMethod" />

残りの問題は、setter メソッドを使用せずにコレクション フィールドにデータを入力する方法です。

4

5 に答える 5

0

xjc-generatedBean を applicationContext.xmlに入力する代わりに、これらの Bean にJava ベースの構成を使用できます。

于 2012-06-18T12:52:54.963 に答える
0

生成されたコードは JAXB の制御下にあるため、それを行うことはできません。ただし、回避策は次のとおりです。

JAXB が Person クラスを作成するとします。生成されたプロパティは保護されます。

Person クラスを拡張する新しいクラス MyPerson を作成し、セッター メソッドを MyPerson クラス内に配置できます。したがって、Bean 構成ファイルからプロパティを初期化でき、生成されたコードは変更を上書きしません。詳細がわからないため、お客様のケースに適した回避策である場合とそうでない場合があります。

     generated :
     public class Person{
          protected List<Something> somethingList;
          .
          .
     }




     class MyPerson extends Person{
         public void setList(List<Something> somethingList){
             this.somethingList= somethingList;
         }

     }
于 2011-01-13T11:46:59.823 に答える
0

それらはSpring BeanファクトリではなくJAXBの管理下で作成されたので、あなたができるとは思いません。

于 2011-01-13T11:18:20.303 に答える
0

ゲッター/セッターの代わりにフィールドを使用できます。

于 2011-01-13T11:21:55.610 に答える
0

次に示すように、リストの set メソッドを生成する拡張機能があります。

参照されたサイトが再編成されたため、指定されたリンクは壊れているように見えますが.

collection-setter-injector の場所を取得するには、java.net に質問を投稿する価値があります。

于 2011-01-13T14:26:55.557 に答える