@autowired MessageSource在自定义异常中始终为null

时间:2018-09-11 07:44:01

标签: spring spring-boot javabeans autowired

我在spring boot 2项目上工作并定义以下代码,但是messageSource始终为null。我在@service类中自动连接了MessageSource,它可以工作。谁能告诉我为什么?

public class ApplicationException extends RuntimeException {

    private static final long serialVersionUID = 1L;

    @Autowired
    private MessageSource messageSource;

}

1 个答案:

答案 0 :(得分:1)

自动装配仅在托管类中有效(例如,注释为@ Component,@ Service或在应用程序上下文xml中定义)。 Spring容器不管理ApplicationException,因此它甚至不尝试注入该属性。尝试在您使用此异常的服务类中自动连接MessageSource并将其传递给构造函数。

@Service
public class SomeService {
    private MessageSource messageSource;
    @Autowired
    public SomeService(@NonNull MessageSource messageSource) {
        this.messageSource = messageSource;
    }
    public void someMethod() {
        throw new ApplicationException(messageSource, "Some message");
    }
}