我在spring boot 2项目上工作并定义以下代码,但是messageSource始终为null。我在@service类中自动连接了MessageSource,它可以工作。谁能告诉我为什么?
public class ApplicationException extends RuntimeException {
private static final long serialVersionUID = 1L;
@Autowired
private MessageSource messageSource;
}
答案 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");
}
}