使用Maven插件提取使用Spring注入的参数

时间:2012-06-06 14:27:48

标签: java maven

我有一个应用程序,它使用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; }
}

弹簧上下文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插件提取这类信息的方法?

1 个答案:

答案 0 :(得分:1)

我认为不应该从Spring配置文件中提取信息,而是应该创建一个Spring上下文可以从中加载bean属性的公共文件。然后你可以在构建时很容易地解析这个文件(希望没有编写自定义的Maven插件 - 这会使你的构建变得非常复杂)。看一下Spring 3.1中的新属性管理:http://blog.springsource.com/2011/02/15/spring-3-1-m1-unified-property-management/