作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
给定我的应用程序上下文的 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/
我是一名优秀的程序员,十分优秀!