gpt4 book ai didi

java - 如何在 Spring 中访问命名空间元素的 BeanDefinitions

转载 作者:行者123 更新时间:2023-12-01 13:16:40 24 4
gpt4 key购买 nike

给定我的应用程序上下文的 ListableBeanFactory,我可以遍历 BeanDefinition 并以所需的方式处理 bean 属性:

String[] beanNames = beanFactory.getBeanDefinitionNames();
for (String curName : beanNames) {
BeanDefinition bd = beanFactory.getBeanDefinition(curName);
MutablePropertyValues pvs = bd.getPropertyValues();
... // do anything I want with bean properties
}

但是当涉及到命名空间元素时,例如这个:

<jdbc:initialize-database data-source="dataSource" ignore-failures="NONE" >
<jdbc:script location="${jdbc.dataLocation}"/>
</jdbc:initialize-database>

我可以获取org.springframework.jdbc.datasource.init.DataSourceInitializer类型的bean的顶级定义及其属性,但我无法访问其嵌套元素 jdbc:script 及其属性location。我认为这是因为 jdbc:script 实际上并不是一个 bean。但是有没有办法访问命名空间中的此类嵌套元素?

最佳答案

没有一般规则。命名空间元素的解析器决定如何处理它处理的 XML 元素。

例如,jms:listener-container为每个子jms:listener创建一个jms消息监听器容器,但它不会为根创建任何bean(至少对于Spring 4.0)

解释为什么您需要这样做可能是回答您的问题的更好方法。

关于java - 如何在 Spring 中访问命名空间元素的 BeanDefinitions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22414661/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com