Spring没有注入MessageSource

时间:2011-04-26 16:46:35

标签: spring dependency-injection

我在使用MessageSource和Spring时遇到了问题。对于某些未知(至少对我而言)的原因,我的messageSource对象未被实例化。

我有以下组件:

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会使用继承的msh(MessageSourceHelper)来“咳嗽”。问题是这个对象是null,即它没有被Spring注入。

应该是什么问题?我感谢所有的帮助!

提前致谢。

1 个答案:

答案 0 :(得分:4)

我认为您的InvalidRequestExceptionMapper应该@Componentprivate MessageSourceHelper msh;应该有@Autowired