【发布时间】:2012-06-26 16:22:20
【问题描述】:
考虑以下(检票口)代码:
@SpringBean(required=false)
private StatusCheckService service;
在我的用例中,我的上下文中没有 StatusCheckService 类型的 bean。 这不是问题,它被标记为可选,因此(检票口)页面将正常初始化。
但是:
@SpringBean(name = "statusCheckService", required=false)
private StatusCheckService service;
这失败了:
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'statusCheckService' is defined
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:529)
at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1095)
at org.springframework.beans.factory.support.AbstractBeanFactory.isSingleton(AbstractBeanFactory.java:400)
at org.springframework.context.support.AbstractApplicationContext.isSingleton(AbstractApplicationContext.java:1113)
at org.apache.wicket.spring.SpringBeanLocator.isSingletonBean(SpringBeanLocator.java:100)
at org.apache.wicket.spring.injection.annot.AnnotProxyFieldValueFactory.getFieldValue(AnnotProxyFieldValueFactory.java:140)
我希望这没有什么区别。好的,没有具有这样名称的 bean,但我将其标记为可选,为什么会出现异常?有没有办法解决这个问题?
【问题讨论】:
-
如果您省略名称,它是否有效?
-
嗨,Bert,是的,那么我在启动时没有收到错误消息。这是一个相当复杂的用例,很难用几句话来解释。上面的代码驻留在一个网页中,可以在几个 (17) wicket 应用程序中使用。其中一些将定义一个 StatusCheckService(使用添加到服务 bean 声明的 Spring 名称别名),而另一些则没有。甚至不确定这是 Spring 还是 Wicket 问题。
-
查看堆栈跟踪,它看起来比检票口更具弹性。但你永远不知道。
标签: spring dependency-injection wicket wicket-1.5