我具有Spring上下文文件的以下结构(->
代表“ includes”):
A1.xml -> B.xml & C.xml
A2.xml -> B.xml
C.xml
定义一个bean c
B.xml
定义b
一个依赖于c
显然,这对于A2失败,因为c
在context中没有定义A2
。
我如何指定类似的内容:如果c
在上下文中将其注入,b
否则只需注入null
?
我看着Spring EL但
<property name="b" ref="#{ @c?:null}" />
只是给我一个NoSuchBeanDefinitionException
名字,似乎是b.toString()
!! 的价值。
顺便说一句:我已经知道这件事太乱了,应该尽快清理。
SpEL表达式的#root对象是BeanExpressionContext,您可以getObject()
在该上下文上调用方法;如果未声明bean,则返回null。
<property name="bar" value="#{getObject('bar')}" />
注意:之所以使用value
not,ref
是因为它返回的是bean,而不是bean的定义。
这是来自的代码 getObject()
public Object getObject(String key) {
if (this.beanFactory.containsBean(key)) {
return this.beanFactory.getBean(key);
}
else if (this.scope != null){
return this.scope.resolveContextualObject(key);
}
else {
return null;
}
}
问题内容: 我将Require.js与Angular.js结合使用。 一些控制器需要巨大的外部依赖关系,而其他控制器则不需要,例如,需要Angular UI Codemirror 。这至少是135 kb,至少: 我不想每次我的页面加载时都只包含指令和Codemirror lib只是为了使Angular开心。 这就是为什么我现在仅在遇到路线时才加载控制器,就像这里所做的那样。 但是,当我需要类似的东
我有一个具有以下模式的用户集合: 用户将查找用户。名称,必须是唯一的。添加新用户时,我首先执行搜索,如果没有找到这样的用户,我会将新用户文档添加到集合中。搜索用户和添加新用户(如果未找到)的操作不是原子操作,因此,当多个应用程序服务器连接到DB服务器时,可能会同时收到两个具有相同用户名的添加用户请求,从而导致两个添加用户请求都找不到这样的用户,这反过来会导致两个文档具有相同的“user.name”
我正在用Symfony制作简单的应用程序。我在这里配置了服务 我的服务使用存储库(例如,评论服务使用评论存储库),这里是的构造函数 性质 构造函数: 当我试图运行我的应用程序我得到这个错误 PHP致命错误:未捕获Symfony\Component\DependencyInjection\Exception\AutowiringFailedException:无法自动连线服务“AppBundle\R
我有一个使用Spring Batch编写的批处理作业 我在下面有一个配置文件: 我有Json线聚合如下: 我想注入对象映射器,不想在JsonLineAggregator类中创建它。我知道如何使用DI实现它吗?
我们遇到了遗留代码的问题。对于“username”字段有一个验证集,验证其长度并确保至少包含一个字母: 我们面临的问题是,一些现有的遗留数据不适合这些验证,我试图找到一种方法,使这些验证对遗留数据(老用户)被忽略,而仍然适用于新创建的用户。 我正在考虑将验证移到方法(因此仅在实际更改时验证值),但这导致了一个异常:
问题内容: 我需要将两个对象注入。其中一个是的实例,我得到这样的信息: 那么如何在我的services.yml中声明呢?这是服务: 问题答案: 我找到了此链接,这对我有用: