@Async异步使用及使用中的问题

@Async异步使用及使用中的问题

使用方法:
1.在springboot启动类添加注解:@EnableAsync
eg:

@EnableAsync 
@SpringBootApplication
public class AsyncTestApplication {

    public static void main(String[] args) {
        SpringApplication.run(AsyncTestApplication.class, args);
    }
} 

2.在需要开启异步的方法上添加@Async注解

@Service
public class TestService {
    @Async 
    public void testMethod(){
       //方法的逻辑
    }
}

说明:在方法上添加上 @Async该方法异步,在类上添加 @Async则该类中的方法全部异步
遇到的问题:
随着业务层越来越复杂,各个service之间相互引用,导致在方法上添加 @Async报循环依赖的错误: in its raw version as part of a circular reference, but has eventually been wrapped. This means that said other beans do not use the final version of the bean.
解决方法:简单暴力,在有循环依赖的service上再添加上注解:@Lazy
eg:

	@Service
	public class A{
	
	@Lazy
	@Autowird
	private B b;
	
    @Async 
    public void testMethod(){
       //方法的逻辑
    }
}
	@Service
	public class B{
	
	@Autowird
	private A a;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值