2011-04-26 62 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

相关问题