为什么@Async注解子句是AopInvocationException?
Why @Async Annotation Clauses AopInvocationException?
这是一个代码片段:
@GetMapping("/account")
@SuppressWarnings("unchecked")
public UserDTO getAccount(Principal principal) {
...
janitorService.cleanUp((AbstractAuthenticationToken) principal);
...
}
@Component
public class JanitorService {
...
@Async
public boolean cleanUp(AbstractAuthenticationToken authToken){
...
return true;
}
}
并且有一个异步配置 class。
org.springframework.aop.AopInvocationException: Null return value from advice does not match primitive return type for: public boolean com.mycompany.myteam.JanitorService.cleanUp(org.springframework.security.authentication.AbstractAuthenticationToken)
去掉@Async后不会抛异常。我使用@Async 的原因是启动一个线程。为什么会导致异常?
对于带有 return 的 @Async
方法,return 应该是 Future<T>
而不是 T
。
尝试 returning Future<Boolean>
资料来源:https://www.baeldung.com/spring-async
这是一个代码片段:
@GetMapping("/account")
@SuppressWarnings("unchecked")
public UserDTO getAccount(Principal principal) {
...
janitorService.cleanUp((AbstractAuthenticationToken) principal);
...
}
@Component
public class JanitorService {
...
@Async
public boolean cleanUp(AbstractAuthenticationToken authToken){
...
return true;
}
}
并且有一个异步配置 class。
org.springframework.aop.AopInvocationException: Null return value from advice does not match primitive return type for: public boolean com.mycompany.myteam.JanitorService.cleanUp(org.springframework.security.authentication.AbstractAuthenticationToken)
去掉@Async后不会抛异常。我使用@Async 的原因是启动一个线程。为什么会导致异常?
对于带有 return 的 @Async
方法,return 应该是 Future<T>
而不是 T
。
尝试 returning Future<Boolean>
资料来源:https://www.baeldung.com/spring-async