- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在浏览 Spring IOC 文档并发现以下代码片段:
<bean name="messageBroker,mBroker,MyBroker" class="com.components.MessageBroker">
<property name="tokenBluePrint">
<ref parent="tokenService" />
</property>
</bean>
根据文档,“ref”标签的parent属性用于引用当前bean工厂的父bean工厂,但用于设置bean工厂的父工厂。
我尝试过以下代码片段。但我仍然收到错误。
String[] xmlFies=new String[1];
xmlFies[0]="applicationContext.xml";
ClassPathXmlApplicationContext parentContext=new ClassPathXmlApplicationContext("tokenConfiguration.xml");
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(xmlFies);
context.setParent(parentContext);
context.getBeanFactory().setParentBeanFactory(parentContext.getBeanFactory());
context.close();
parentContext.close();
错误:
原因:org.springframework.beans.factory.BeanCreationException:创建在类路径资源[applicationContext.xml]中定义的名称为“messageBroker”的bean时出错:无法解析对父工厂中bean“tokenService”的引用:否母厂可用 在 org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:360)
我错过了什么吗?请看一下。
最佳答案
我认为问题在于您的子上下文在设置父上下文之前刷新。
以下是来自 ClassPathXmlApplicationContext
的相关构造函数:
// this is the constructor that 'context' is using, and refresh is defaulted to true
public ClassPathXmlApplicationContext(String... configLocations) throws BeansException {
this(configLocations, true, null);
}
// the constructor that both others are calling
public ClassPathXmlApplicationContext(String[] configLocations, boolean refresh, ApplicationContext parent)
throws BeansException {
super(parent);
setConfigLocations(configLocations);
if (refresh) {
// you don't want to refresh until your parent context is set
refresh();
}
}
// the constructor I think you should use, it will set the parent first and then refresh
public ClassPathXmlApplicationContext(String[] configLocations, ApplicationContext parent) throws BeansException {
this(configLocations, true, parent);
}
我会使用最后一个构造函数,以便在调用 refresh()
之前设置父上下文。
像这样:
String[] xmlFies=new String[1];
xmlFies[0]="applicationContext.xml";
ClassPathXmlApplicationContext parentContext = new ClassPathXmlApplicationContext("tokenConfiguration.xml");
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(xmlFies, parentContext);
. . .
关于java - 如何在spring IOC中设置当前beanFactory的父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52726461/
对不起我的英语。我使用 Eclipse 3.7,它在 tomcat6 上运行网络应用程序(spring-mvc + spring-secirity),但会发生下一个错误: java.lang.Ille
每次我新建一个新的 BeanFactory 时,都会重新创建 XML 文件中的 bean 吗?换句话说,如果我将 bean 的作用域设置为 Singleton,即使我新建了另一个 BeanFactor
1. BeanFactory fac=new ClassPathXmlApplicationContext("Spring-Config.xml"); 2. Resource res=new Clas
我有一个单例类,我想使用 Spring 的 IoC 创建它。该类还需要使用 IoC 实例化动态数量的其他对象。因此,此类需要将 BeanFactory 作为构造函数参数传入。我怎样才能做到这一点? 这
我一直在努力寻找更好的方法来做到这一点。在 Spring 中,我的很多类需要从 XmlBeanFactory 加载 bean(对象)。所以我将以下行放入我的大部分类(class)中 private s
当使用 Spring 并结合 ProxyFactoryBean 和 @Inject Provider<> 时,最终会在启动过程中创建大量对象。 我已将原因确定为 DefaultListableBean
我对 Spring 框架还很陌生,我一直在使用它并将一些示例应用程序放在一起,以评估 Spring MVC 以用于即将到来的公司项目。到目前为止,我真的很喜欢我在 Spring MVC 中看到的东西,
我有两个实现我的服务接口(interface)的服务,我想在运行时根据某些规则选择正确的服务,例如: public interface Service { public String doSometh
这个问题在这里已经有了答案: BeanFactory vs ApplicationContext (21 个回答) 7年前关闭。 两者实际上都是 ioc 容器。但它们之间的实际区别是什么?哪个更好用?
对于自定义 Scope(由于法律原因我不能在这里发布)我需要一个自定义 BeanFactory 来覆盖 getBean(Class requiredType) 方法,例如: public class
我的意图是从各种来源/目录(首先,稍后可能从 ftp)创建 IntegrationFlow bean 实例。因此,在 application.properties 中,我想定义这样的内容,入站目录的数
我正在关注 tutorial使用JAVA操作Alfresco上的nodeRef和内容。但是当我尝试定义 serviceRegistry 时, ServiceRegistry serviceRegis
Spring Application Context 将在 Server StartUp 时加载所有 Singleton bean。但是在大应用程序的情况下,它已经将很多对象加载到内存中。这不会成为应
slow autowire by type problem终于通过创建缓存bean工厂解决了。 我真的很想能够将这样的 CachingByTypeBeanFactory 与 SpringJUnit4C
这是我的错误: 我遇到了这个错误,谁能帮我解决这个问题。 > SEVERE: Exception sending context initialized event to listener > ins
我目前正在重构一个大型 Swing 应用程序,以便从 XmlBeanFactory 获取一些对象。 许多不同的类可以使用它,我想知道共享这个 beanFactory 的最佳方式是什么。 我应该创建一个
我确信上述问题有一个简单的答案,但我无法轻易找到它(无论是在文档中还是在 stackoverflow.com 上) 我得到一个 BeanFactory/ApplicatioContext 可以用几个
我有许多原型(prototype) bean,它们都共享一个公共(public)父类(super class) ( Foo )。所有这些 bean 都有一个采用一个 String 参数的通用构造函数。
首先,我不确定这样做是否是一个好主意。 目标是创建一些带有注释的接口(interface),以隐藏配置数据库中基于位置的遗留字符串访问,而无需实现每个接口(interface)。 声明式配置接口(in
我想将一个 Spring BeanFactory 注入(inject)到由同一个 BeanFactory 创建的 Bean有什么办法吗? 顺便说一下,我正在开发一个网络应用程序。如果不是,我知道我可以
我是一名优秀的程序员,十分优秀!