2012-06-13 51 views
2

到目前爲止,我已經將xml和java配置混合在一起,並取得了非常好的成功,但有一個用例似乎不起作用。 我讓春天使用組件配置掃描我的JAX-RS資源和他們正確解析:Spring java配置沒有找到已經通過上下文創建的bean:component-scan

<context:component-scan 
    base-package="<my packages>"> 
    <context:include-filter type="annotation" 
     expression="javax.ws.rs.Path" /> 
... 

但是,如果我嘗試調用這些類別中的一個我的Java的配置:

HttpInvokerServiceExporter exp = new HttpInvokerServiceExporter(); 
exp.setService(context.getBean(Users.class)); 

我得到此錯誤: 沒有定義[com.gecod.allianz.arco.web.restresources.Users]類型的唯一bean:期望的單一bean但找到0:

一種解決方案可能是在xml中聲明JAX-RS bean或java配置,但這種方式Reste asy不會將它們識別爲JAX-RS資源。

我想我有一個競賽條件,任何提示?

+1

您正在使用哪個上下文進行查找工作得更好?有可能是錯誤的。 –

+0

context = new ClassPathXmlApplicationContext(「spring-config.xml」); 請注意,context:component-scan位於該xml配置文件中。 謝謝 –

+0

我剛剛嘗試過:它無法在web上下文中使用(該代碼片段來自測試用例代碼) –

回答

0

看看這

<beans xmlns="http://www.springframework.org/schema/beans"  xmlns:mvc="http://www.springframework.org/schema/mvc"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"  xmlns:context="http://www.springframework.org/schema/context"  xsi:schemaLocation="  http://www.springframework.org/schema/beans   http://www.springframework.org/schema/beans/spring-beans-3.1.xsd  http://www.springframework.org/schema/context   http://www.springframework.org/schema/context/spring-context-3.1.xsd  http://www.springframework.org/schema/mvc  http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">   <context:annotation-config />  
<context:component-scan base-package="com.blah.blah" /> 
+0

我不再在那個項目上,但是非常感謝您的建議;如果我正確地記得組件分散在不同的包中,那就是爲什麼我使用了註解方法。 –

相關問題