- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 Spring 上下文命名空间在应用程序中构建一些现有的配置对象。我已经定义了一个上下文,如果工作令人满意的话,我几乎已经定义了 - 但是,我希望我的命名空间定义的一个 bean 隐式引用另一个:
考虑名为“Node”的类:
public Class Node {
private String aField;
private Node nextNode;
public Node(String aField, Node nextNode) {
...
}
现在在我的 Spring 上下文中我有这样的东西:
<myns:container>
<myns:node aField="nodeOne"/>
<myns:node aField="nodeTwo"/>
</myns:container>
现在我希望 nodeOne.getNextNode() == nodeTwo
为 true
。因此 nodeOne.getNextNode()
和 nodeTwo
引用同一个 bean 实例。这些几乎是我的 AbstractBeanDefinitionParser
中的相关部分:
public AbstractBeanDefinition parseInternal(Element element, ParserContext parserContext) {
...
BeanDefinitionBuilder containerFactory = BeanDefinitionBuilder.rootBeanDefinition(ContainerFactoryBean.class);
List<BeanDefinition> containerNodes = Lists.newArrayList();
String previousNodeBeanName;
// iterate backwards over the 'node' elements
for (int i = nodeElements.size() - 1; i >= 0; --i) {
BeanDefinitionBuilder node = BeanDefinitionBuilder.rootBeanDefinition(Node.class);
node.setScope(BeanDefinition.SCOPE_SINGLETON);
String nodeField = nodeElements.getAttribute("aField");
node.addConstructorArgValue(nodeField);
if (previousNodeBeanName != null) {
node.addConstructorArgValue(new RuntimeBeanReference(previousNodeBeanName));
} else {
node.addConstructorArgValue(null);
}
BeanDefinition nodeDefinition = node.getBeanDefinition();
previousNodeBeanName = "inner-node-" + nodeField;
parserContext.getRegistry().registerBeanDefinition(previousNodeBeanName, nodeDefinition);
containerNodes.add(node);
}
containerFactory.addPropertyValue("nodes", containerNodes);
}
创建应用程序上下文时,我的 Node
实例被创建并被识别为单例。此外,nextNode
属性由具有先前节点配置的 Node
实例填充 - 但是,它不是相同的实例。
如果我在 Node
的构造函数中输出一条日志消息,我会看到为每个节点 bean 定义创建了两个实例。
我自己可以想到一些解决方法,但我更愿意使用现有模型。那么谁能告诉我如何传递这些运行时 bean 引用,以便为我的 Node
实例获得正确的单例行为?
最佳答案
我想问题是你实际上有每个节点定义的两个实例 - 一个作为顶级节点(通过 registerBeanDefinition
),另一个在 nodes
属性中ContainerFactoryBean
。也许,您应该将 RuntimeBeanReference
的节点放入 ContainerFactoryBean
中。
关于java - 使用 NameSpaceHandler 时 Spring bean 之间的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2968122/
org.mule.api.lifecycle.InitialisationException: Initialisation Failure: Configuration problem: Unabl
我正在尝试使用基本身份验证配置我的网络应用程序。但是在我配置了 spring-security.xml 后,Web 应用程序无法再在 Tomcat 上启动。 它抛出异常如下: Exception se
我已经为这个问题奋斗了几天,我真的很绝望。我正在升级的遗留项目在 Tomcat 启动期间给我以下错误消息: Configuration problem: Unable to locate Namesp
当我使用 spring v.3.1 执行我的 java 项目时,出现以下错误: Bean 'configParser'; nested exception is org.springframework
这个错误我已经有将近一周的时间了,我正准备放弃。我已经使用 Maven2 制作了 BIG jar 文件。当我使用以下方式运行 jar 文件时: java -jar someJar.jar 我收到此错
我正在使用 SpringSource Tool Suite 开发一个 spring webflow (2.0.7) 项目。我正在尝试设置基本流程。 我的 someflow.xml 看起来像这样:
尝试在Tomcat 6上运行应用程序时遇到Spring 3.1命名空间问题: GRAVE: Exception sending context initialized event to listene
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: Spring BeanDefinitionParsingException SEVERE: StandardWrap
在成功尝试实现我自己的蓝图拦截器以使用命名空间处理程序跟踪方法进入/退出之后,我现在正在寻找增强它的方法,其中拦截器本身被定义为同一蓝图 xml 中的另一个 bean,并且我的命名空间元素使用 ref
引起:org.springframework.beans.factory.parsing.BeanDefinitionParsingException:配置问题:无法为 XML 模式命名空间找到 Sp
当我尝试运行一个简单的应用程序 (JPA + Hibernate + Maven) 时出现以下错误。当我将 war 文件部署到应用程序服务器时它工作正常,但它在我的 IDE (Eclipse) 中不起
我想使用 Spring 实现 Oracle Pooling DataSource,如下所述: http://docs.spring.io/spring-data/jdbc/docs/current/r
我在 eclipse 中的 tomcat 中运行一些 servlet 代码。它一直工作正常,但今天我收到错误 Unable to locate Spring NamespaceHandler for
在运行时,我的代码在终端上出现此错误 线程“main”中的异常 java.lang.RuntimeException:org.springframework.beans.factory.parsing
我正在使用 Spring 创建一个独立的 Sava 应用程序,以处理 JDBC 访问。该应用程序在每次测试中都能正常运行,我决定需要一个 jar 来部署我们的客户端。 他们的类路径中可能没有 spri
我一遍又一遍地收到此错误: 10:37:21,270 ERROR DispatcherServlet:466 - Context initialization failed org.springfra
*强文本*我在运行 Java SE +Spring 应用程序时遇到以下错误。我在互联网和这个网站上发现了类似的问题,但找不到正确的解决方案。我认为问题是缺少jar文件。 Exception in th
我正在尝试在 Spring Boot 2.1.7 应用程序中配置 ActiveMQ 代理,特别是启用 statsBrokerPlugin。 我的activemq.xml:
我正在尝试使用 Eclipse 创建我的第一个 Spring/Maven Web 应用程序,但我在 spring-security.xml 配置文件中收到此警告,这几天来一直让我抓狂! 我尝试从其他人
[http://www.springframework.org/schema/tx] 我将 jar 文件包含在 maven pom.xml 中。当我从 Eclipse 中运行 swing 应用程序时,
我是一名优秀的程序员,十分优秀!