写一个spring异步实例
时间: 2023-07-13 12:05:02 浏览: 107
spring异步调用的例子
4星 · 用户满意度95%
以下是一个使用Spring的异步实例,它使用了`@Async`注解来标记异步方法:
```java
@Service
public class MyService {
@Async
public CompletableFuture<String> asyncMethod() {
// 执行一些异步任务
return CompletableFuture.completedFuture("异步方法执行完成");
}
}
```
在上面的例子中,`@Async`注解标记了`asyncMethod()`方法,告诉Spring这个方法应该在一个新的线程中异步执行。方法返回了一个`CompletableFuture`对象,可以用来获取异步方法的返回值。
要让Spring能够识别`@Async`注解,需要在配置类中添加`@EnableAsync`注解:
```java
@Configuration
@EnableAsync
public class AppConfig {
// 配置其他Bean
}
```
现在,我们可以在另一个类中调用异步方法并等待异步方法的执行结果:
```java
@Component
public class MyComponent {
@Autowired
private MyService myService;
public void doSomething() throws ExecutionException, InterruptedException {
CompletableFuture<String> future = myService.asyncMethod();
String result = future.get();
System.out.println(result);
}
}
```
在上面的例子中,`MyComponent`类通过`@Autowired`注解注入了`MyService`,然后调用了`asyncMethod()`方法并等待它的执行结果。`get()`方法会阻塞当前线程直到异步方法执行完成并返回结果。
阅读全文