Intellij显示红色下划线。
当鼠标悬停到红色下划线时,显示此消息。
使用' @Async'注释的方法必须是可以覆盖的
报告代码阻止类出现的情况 在运行时由某个框架(例如Spring或Hibernate)子类化
我应该怎样做才能消除此错误?
它显示红色下划线。但它仍然没有编译错误。
我正在使用Intellij 2017.2.5。
@Async
private void deleteFile(String fileName, String path) {
BasicAWSCredentials credentials = new BasicAWSCredentials(AWS_ACCESS_KEY, AWS_SECRET_KEY);
AmazonS3 s3client = AmazonS3ClientBuilder.standard().withRegion("ap-northeast-2").withCredentials(new AWSStaticCredentialsProvider(credentials)).build();
try {
s3client.deleteObject(new DeleteObjectRequest(AWS_BUCKET_NAME, path + fileName));
} catch (AmazonServiceException ase) {
System.out.println("Caught an AmazonServiceException.");
System.out.println("Error Message: " + ase.getMessage());
System.out.println("HTTP Status Code: " + ase.getStatusCode());
System.out.println("AWS Error Code: " + ase.getErrorCode());
System.out.println("Error Type: " + ase.getErrorType());
System.out.println("Request ID: " + ase.getRequestId());
} catch (AmazonClientException ace) {
System.out.println("Caught an AmazonClientException.");
System.out.println("Error Message: " + ace.getMessage());
}
}
答案 0 :(得分:1)
错误表示private
必须是protected
cq。 public
,因为异步性。
然后没有看到Async工具使用此方法。只需添加SuppressWarnings
,说明您知道自己在做什么。
@Async
@SuppressWarnings("WeakerAccess")
protected void deleteFile(String fileName, String path) {
您可以向IntelliJ团队提示。
答案 1 :(得分:1)
@Async
表示Spring异步执行此方法。所以它只能在几个条件下工作:
对于后者,似乎你直接在你的类中调用这个方法,所以Spring无法知道你调用了这个方法,它不是魔法。
您应该重构代码,以便在Spring管理的bean上调用该方法,如下代码所示:
@Service
public class AsyncService {
@Async
public void executeThisAsync() {...}
}
@Service
public class MainService {
@Inject
private AsyncService asyncService;
public mainMethod() {
...
// This will be called asynchronusly
asyncService.executeThisAsync();
}
...
}