Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Maven插件提取使用Spring注入的参数_Java_Maven - Fatal编程技术网

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

Java 使用Maven插件提取使用Spring注入的参数,java,maven,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

我有一个应用程序,它使用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; }
}
我选择开发一个Maven插件来完成这个必要的处理。基本上,插件将加载Spring上下文文件,并使用getBean(“…”)方法获取感兴趣的bean。然而,我遇到了一个问题。为了从bean中提取信息,插件代码需要知道它正在操作什么类型的对象。这意味着插件代码需要根据主项目代码进行编译。我觉得这是不对的。
有人知道Maven插件提取此类信息的方法吗

我认为不应从Spring配置文件中提取信息,而应该创建一个公共文件,Spring上下文可以从中加载bean属性。然后,您可以在构建时非常轻松地解析该文件(希望无需编写自定义Maven插件-这将使您的构建变得非常复杂)。看看Spring3.1中的新属性管理:

我认为不应该从Spring配置文件中提取信息,而应该创建一个公共文件,Spring上下文可以从中加载bean属性。然后,您可以在构建时非常轻松地解析该文件(希望无需编写自定义Maven插件-这将使您的构建变得非常复杂)。看看Spring 3.1中的新属性管理:

为什么不直接使用xml解析器?并复制org.springframework.context.ApplicationContext提供的功能。不知何故,我认为这不是一个好主意……为什么不直接使用xml解析器呢?并复制org.springframework.context.ApplicationContext提供的功能。不知何故,我认为这不是一个好主意……比如说,创建了许多As和Bs。然后用不同的排列将它们连接起来。这个建议行不通。由于“配置”现在嵌入到spring上下文文件中,要提取它,您需要读取对象以查看它们是如何连接的。当然,这当然取决于您的配置。但是如果不知道你想做什么,我就不能提供更多的建议。很可能有一个比你现在做的更简单的解决方案。也许你可以用更多的上下文来更新这个问题。比如说,创建了一些As和Bs。然后用不同的排列将它们连接起来。这个建议行不通。由于“配置”现在嵌入到spring上下文文件中,要提取它,您需要读取对象以查看它们是如何连接的。当然,这当然取决于您的配置。但是如果不知道你想做什么,我就不能提供更多的建议。很可能有一个比你现在做的更简单的解决方案。也许你可以用更多的上下文来更新这个问题。
<?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}