messageSource没有被spring自动装配

时间:2017-05-01 07:08:31

标签: spring

我正在尝试从我的消息属性文件中获取消息

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

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;

public class Test{

@Autowired
    private MessageSource messageSource;
    public MessageSource getMessageSource() {
        return messageSource;
    }
    public void setMessageSource(MessageSource messageSource) {
        this.messageSource = messageSource;
    }

public void draw()
    {

    System.out.println(this.messageSource.getMessage("name",null,"default",null));`enter code here`
    }}

因为我得到空指针异常

但是当我更改代码并在测试类中实现MessageSourceAware时,它的工作正常。甚至在我删除了@autowired注释和bean id defination本身之后。

1 个答案:

答案 0 :(得分:0)

这里我在调度程序上下文中声明“servlet-context.xml”:

<beans:bean id="messageSource"  class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <beans:property name="basename" value="classpath:messages" />
    <beans:property name="defaultEncoding" value="UTF-8"/>
    <beans:property name="fileEncodings" value="UTF-8"/>
</beans:bean>

将班级名称从class="org.springframework.context.support.ResourceBundleMessageSource更改为class="org.springframework.context.support.ReloadableResourceBundleMessageSource

为什么你的basename属性为空?