JBoss - 自动装配列表 - @ Resource,@ Inject抛出NoSuchBeanDefinitionException

时间:2012-11-29 09:35:50

标签: spring jboss autowired

Env - JBoss 5.1,Spring 3.1.2,jdk 1.5

我正在尝试自动挂载列表。根据这里的讨论Auto-wiring a List using util schema gives NoSuchBeanDefinitionException,@ Resource不适用于JBoss。

<util:list id="reportTypes">
  <value>PDF</value>
  <value>CSV</value>
  <value>XML</value>
</util:list>

@Inject
private List<String> reportTypes;

我也尝试过使用@Inject,但是我得到了同样的异常。我错过了什么?

我正在使用这里提到的@Inject的JSR 330,com.springsource.javax.inject-0.9.0.PFD.jar文件http://forum.springsource.org/showthread.php?78737-JSR-330-Inject-Spring-3-0

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException:
No matching bean of type [java.lang.String] found for dependency 
[collection of java.lang.String]: expected at least 1 bean which qualifies as autowire
candidate for this dependency. Dependency annotations: {@javax.inject.Inject()}

编辑使用

@Resource(name = "reportTypes")
private List<String> reportTypes;

引发

java.lang.RuntimeException: mapped-name is required for reportTypes of deployment app.war 
at org.jboss.web.tomcat.service.injection.WebResourceHandler.loadXmlResourceEnvRefs(WebResourceHandler.java:287)
at org.jboss.web.tomcat.service.injection.WebResourceHandler.loadXml(WebResourceHandler.java:325)
at org.jboss.web.tomcat.service.TomcatInjectionContainer.processMetadata(TomcatInjectionContainer.java:550)
at org.jboss.web.tomcat.service.WebCtxLoader.start(WebCtxLoader.java:158)

1 个答案:

答案 0 :(得分:0)

我自己曾经多次与这个问题作斗争。除了我已经开始使用@Inject @Named对之外,我对你的问题没有确切的答案。这似乎在大部分时间都有效。

据我所知,@ Resource不起作用的原因不是jboss本身的错,而是jboss捆绑的tomcat版本的错误。