大家好,我是健康的小韩,好久不见,这次给大家分享一下如何使用@Async进行异步操作吧。
大家在开发的过程中应该会遇到一些需要两个业务一起进行的情况,但是呢又需要两个业务各自进行各自的操作,所以呢,这时候就需要用到异步了,这里呢我使用的是@Async进行异步操作。
首先使用 ApplicationEvent 进行事件的监听,如下:
代码如下:
public class TestEvent extends ApplicationEvent { private Long source; public TestEvent(Long source) { super(source); this.source = source; } @Override public Long getSource() { return source; } }
这里面的source可以设置为任意的值,包括实体类这些的,这里我只是为了方便只放一个值做展示罢了。
接下来要做的就是创建相应的监听类,然后在里面进行相应的业务处理等操作。
代码如下:
@Slf4j @Component public class TestListener { @EventListener @Async public void testWork(Long source){ log.info("业务处理开始"); System.out.println("----------"); log.info("业务处理结束"); } }
这里主要使用的就是@Async 进行业务处理等操作。
写好监听以及异步处理后,就可以使用了,使用代码非常简单。如下:
首先注入:
代码如下:
@Resource private ApplicationEventPublisher applicationEventPublisher;
然后直接进行使用就行了,如下:
代码如下:
applicationEventPublisher.publishEvent(new TestEvent(this,source));
好了 这就是使用@Async进行异步操作的全过程了,虽然看起来有点麻烦,复杂,但是实际上是为了代码的整洁度而这样做的,并且这样写出来会非常容易寻找,容易找错。
OK,多谢大家,这就是小韩这期的内容啦!大家有缘再见咯