@Async 注解去哪儿了?

Where does @Async annotation go?

我正在使用 Spring 框架为移动和 Web 应用程序构建 API。据我了解,注释 @Async 意味着将产生一个新线程来满足此方法处理的需要。因此,为了保持进程 运行 异步,控制器代码如下所示:

@Async
@RequestMapping(path = "", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody CompletableFuture<ResponseEntity<ApiResponse>> DoSomething()
{
    log.info("Get something done with the request received from user ");
    return (CompletableFuture.supplyAsync(() -> DoSomethingProcessor()));
}

在这里,我让控制器接收请求,然后将其发送到处理器方法(也是 @Async)。在这种情况下,控制器将可以自由接收更多请求,并且请求将同时运行。这是处理器方法的代码:

@Async
private ResponseEntity<ApiResponse> GetPermissionsProcessor () {
//Do things here
return new ApiResponse()
}

处理器调用服务方法,如果需要,服务方法又调用存储库。

更新: 服务层如下所示:

@Async
public static ApiResponse CreateRole (Object anObject) throws Exception{
    //Do things and call repository
    return new ApiResponse(x);
}

这是存储库代码:

public static Integer InsertRole (Object newObject, DataSourceConfig dsc)
{
    String sql = "INSERT INTO table";
    dsc.insertObject(sql, NewObject);
    return dsc.insertObject(sql, newRole);
}

我的问题是我在哪里停止添加 @Async 注释?在控制器级别或服务级别(业务逻辑层)或存储库? 或者我在这里采取了错误的方法?是不是只有在服务和仓库层有需要大量处理的东西才加?

正如 M. Deinum 所说,我不需要在我的 类 中使用 @Async 注释,因为我正在使用 Java 可完成的未来,我不需要将它与 spring 框架混合。