Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.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/0/xml/14.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定义的Xml文件添加子标记?_Java_Xml_Spring - Fatal编程技术网

如何向已经使用Java定义的Xml文件添加子标记?

如何向已经使用Java定义的Xml文件添加子标记?,java,xml,spring,Java,Xml,Spring,我有一个包含Spring项目配置的XML文件,我想动态添加一个新bean。我必须修改初始xML文件并添加新的bean定义: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocat

我有一个包含Spring项目配置的XML文件,我想动态添加一个新bean。我必须修改初始xML文件并添加新的bean定义:

    <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

<bean id="config"
        class="myclass">
        <property name="configXml">
            <value>config.xml</value>
        </property>
    </bean>

<-- here a want to add a new bean definition <bean>....</bean> -->

</beans>

config.xml

有人有什么想法吗?

我仍然不是100%理解你的意思,但这里有两个案例可以尝试

如果希望基于某个派生值指定bean的属性,可以使用Spring表达式语言


如果您想要更复杂的东西,您可以使用工厂bean以编程方式构造bean

<bean id="someBean" class="example.SomeBeanFactory">
    <property name="config" ref="config"/>
</bean>

有点像

class SomeBeanFactory implements FactoryBean<SomeBean> {
    public void setConfig(MyClass config) { ... }

    public SomeBean getObject() {
        ...
    }
}
类SomeBeanFactory实现FactoryBean{
公共void setConfig(MyClass config){…}
公共SomeBean getObject(){
...
}
}

动态?你的意思是在运行时吗?是的,在运行时,用户不需要定义bean,他只需提供相关信息,应用程序就会生成配置文件(XML),因此我必须将新的bean定义添加到配置文件中。。。必须是ander标签听起来不像是你应该用Spring做的事情。您想在新bean中添加什么?我想通过添加新bean定义来修改XMLSpring配置文件。在我的例子中,配置文件不是我的Eclipse项目的一部分,它是一个外部文件,因为我的bean是作为jar文件引入应用程序的,我的意思是bean也是外部的。我不想让用户定义bean,他只需要给我一些信息。应用程序为他添加bean定义;但是没有对xml的任何修改。我希望我能解释我的意思:)
class SomeBeanFactory implements FactoryBean<SomeBean> {
    public void setConfig(MyClass config) { ... }

    public SomeBean getObject() {
        ...
    }
}