Spring を使用していくつかの Bean をさまざまな組み合わせで接続するアプリケーションがあります。以下は、アプリケーションの関連部分を説明するのに役立つ単純化されたクラスです。
class A {
private List<B> fieldB;
public void setFieldB(List<B> fieldB) { this.fieldB = fieldB; }
public List<B> getFieldB() { return this.fieldB; }
}
class B {
private String name;
private String field1;
private String field2;
public void setName(String name) { this.name = name; }
public void setField1(String value1) { this.field1 = value1; }
public void setField2(String value2) { this.field2 = value2; }
public String getName() { return this.name; }
public String getField1() { return this.field1; }
public String getField2() { return this.field2; }
}
spring-context-file1.xml
<?xml ...>
<beans ...>
<bean id="a" class="com.example.A">
<property name="fieldB">
<list> <ref bean="b1"/> <ref bean="b2"/> </list>
</property>
</bean>
<bean id="b1" class="com.example.B">
<property name="name">
<value>b1</value>
</property>
<property name="field1">
<value>fieldOneValueOne</value>
</property>
<property name="field2">
<value>fieldOneValueTwo</value>
</property>
<bean>
<bean id="b2" class="com.example.B">
<property name="name">
<value>b2</value>
</property>
<property name="field1">
<value>fieldTwoValueOne</value>
</property>
<property name="field2">
<value>fieldTwoValueTwo</value>
</property>
<bean>
</beans>
上記を踏まえて、私がやりたいことは、ビルド時に次の情報を抽出することです。
spring-context-file1.cfg
b1 => {fieldOneValueOne, fieldOneValueTwo}
b2 => {fieldTwoValueOne, fieldTwoValueTwo}
この必要な処理を行うために Maven プラグインを開発することにしました。基本的に、プラグインは Spring コンテキスト ファイルをロードし、getBean("...") メソッドを使用して目的の Bean を取得します。しかし、私は問題に遭遇しました。Bean から情報を抽出するために、プラグイン コードは、操作しているオブジェクトのタイプを知る必要があります。これは、プラグイン コードをメイン プロジェクト コードに対してコンパイルする必要があることを意味します。これは私には間違っているようです。Maven プラグインがこの種の情報を抽出する手段を知っている人はいますか?