我的服务:
@Service
public class ForgetService{
@Async
public CompletableFuture<Object> getTokenService() {
Map<String, Object> map = new HashMap<>(8);
map.put("status", ErrorEnum.TOKEN_SUSSCESS.getStatus());
map.put("message", ErrorEnum.TOKEN_SUSSCESS.getMessage());
return CompletableFuture.completedFuture(map);
}
}
我的 Controller :
@RestController
public class ForgetController {
private final ForgetService forgetService;
@Autowired
private ForgetController(ForgetService forgetService) {
this.forgetService = forgetService;
}
@PostMapping(value = "/forget/token")
@Async
public CompletableFuture<Object> getTokenController() {
return CompletableFuture.completedFuture(forgetService.getTokenService());
}
}
Spring Boot应用程序类:
@SpringBootApplication
@EnableAsync
public class ApitestApplication {
public static void main(String[] args) {
SpringApplication.run(ApitestApplication.class, args);
}
}
<小时/>
当我运行我的应用程序时,控制台日志:
bean“forgetService”无法作为“com.apitest.service.ForgetService”注入(inject),因为它是实现以下功能的 JDK 动态代理: com.apitest.inf.ForgetServiceInf
行动:
考虑将 bean 作为其接口(interface)之一注入(inject),或者通过在 @EnableAsync 和/或 @EnableCaching 上设置 proxyTargetClass=true 来强制使用基于 CGLib 的代理。
<小时/>我尝试在 application.properties 中设置 'spring.aop.proxy-target-class=true' 并设置 '@EnableAsync(proxyTargetClass=true),但没有用,那是怎么回事?怎么解决?
最佳答案
请使用以下方法,它可能会帮助您解决此问题。
@Service
public class ForgetService{
@Bean("GetTokenService")
public CompletableFuture<Object> getTokenService() {
Map<String, Object> map = new HashMap<>(8);
map.put("status", ErrorEnum.TOKEN_SUSSCESS.getStatus());
map.put("message", ErrorEnum.TOKEN_SUSSCESS.getMessage());
return CompletableFuture.completedFuture(map);
}
@RestController
public class ForgetController {
private final ForgetService forgetService;
@Autowired
private ForgetController(ForgetService forgetService) {
this.forgetService = forgetService;
}
@PostMapping(value = "/forget/token")
@Async("GetTokenService")
public CompletableFuture<Object> getTokenController() {
return CompletableFuture.completedFuture(forgetService.getTokenService());
}
}
关于java - 如何解决Spring boot @EnableAsync和@Async问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52980853/