我有一个应用程序,它使用 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 插件提取此类信息的任何方法?