2011-04-26 56 views
3

我在使用MessageSource和Spring時遇到了問題。對於一些未知的(至少對我而言)原因,我的messageSource對象沒有被實例化。MessageSource沒有被Spring注入

我有以下組成部分:

applicationContext.xml

... 
<import resource="messageSource-ctx.xml" /> 
... 
<context:component-scan base-package="com.foo.bar" /> 
... 


messageSource.xml

<beans ...> 
    <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> 
     <property name="basenames"> 
      <list> 
       <value>backendErrorCodesMapping</value> 
       <value>restErrorCodesMapping</value> 
      </list> 
     </property> 
    </bean> 
</beans> 


MessageSourceHelper.java

package com.foo.bar.util; 

@Component 
public class MessageSourceHelper { 

    @Autowired 
    private MessageSource messageSource; 

    ... 
} 


GenericRestExceptionMapper.java

package com.foo.bar.rest.exception 

@Component 
public abstract class GenericRestExceptionMapper{ 

    @Resource 
    private MessageSourceHelper msh; 

    .... 
} 


InvalidRequestExceptionMapper.java

package com.foo.bar.rest.exception 

@Provider 
public class InvalidRequestExceptionMapper extends GenericRestExceptionMapper implements ExceptionMapper<InvalidRequestException> { 

... 

} 

一旦發生InvalidRequestException,它將由InvalidRequestExceptionMapper「cought」,它使用繼承的msh(MessageSourceHelper)。問題是這個對象是null,即它沒有被Spring注入。

應該是什麼問題?我感謝所有的幫助!

在此先感謝。

+1

什麼是'@ Provider'?你確定'InvalidRequestExceptionMapper'是由Spring管理的嗎? – axtavt 2011-04-26 16:50:26

回答

4

我覺得你InvalidRequestExceptionMapper應該有@Componentprivate MessageSourceHelper msh;應該有@Autowired

+0

謝謝Arun!這工作得很好! 問題是'InvalidRequestExceptionMapper'中缺少'@ Component'annotation – 2011-04-26 17:30:13

相關問題