【发布时间】:2018-08-01 11:01:48
【问题描述】:
我对弹簧自动装配有疑问。我有一个实现 AsyncUncaughtExceptionHandler 的类。
@Component
public class MyExceptionHandler implements AsyncUncaughtExceptionHandler {
@Autowired
MyService myService;
@Override
public void handleUncaughtException(Throwable throwable, Method method, Object... obj) {
if (throwable instanceof MyException) {
myService.handleException((MyException) throwable);
} else {
//...
}
}
当代码运行到调用 myService 的地方,会抛出 Nullpointer,因为 myService 为 null。 MyService 在其他地方自动装配没有任何问题,只有在 AsyncUncaughtExceptionHandler 的实现中自动装配似乎会导致问题。
@Service
public class MyService {
public void handleException(MyException e) {
//...
}
}
我在 StackOverflow 上遇到过一些问题,解决了类似的问题。这些问题是由代理机制引起的,但我没有设法使代码工作。另外,我不确定这是否是问题。
感谢任何帮助。提前致谢。
【问题讨论】:
-
您的
MyExceptionHandler是@Service、@Component还是类似的? -
是的,我忘了提。我已经更新了问题。
-
添加配置
MyExceptionHandler的代码。我的猜测是您使用new MyExceptionHandler()而不是使用 Spring 托管实例。
标签: java spring asynchronous exception autowired