Spring非同步執行(@Async)2點注意事項
Spring中可以非同步執行程式碼,註解方式是使用@Async註解。
原理、怎麼使用,就不說了。
寫2點自己遇到過的問題。
1.方法是公有的
// 通知歸屬人
@Async
public void notifyPusher(Project project) {
}
2.非同步程式碼,需要放在外部單獨的類中。
@Service("asyncBiz")
public class AsyncBiz {
@Async
public void notifyPusher(Project project) {
}
}
據說這是一個“常識”,外部方法才會被Spring攔截器攔截到額。
程式碼呼叫示例
@Service
public class ProjectServiceImpl implements ProjectService{
public void audit(long id, short status) {
if(project.getPusher() != null){
AsyncBiz asyncBiz = SpringContextUtil.asyncBiz();
asyncBiz.notifyPusher(project);
asyncBiz.notifyCare(project);
}
}
}
一個工具類
@Component
public class SpringContextUtil implements ApplicationContextAware{
private static ApplicationContext ctx;
@Override
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
this.ctx = applicationContext;
}
public static ApplicationContext getCtx(){
return ctx;
}
public static Object getBean(String name) throws BeansException {
return ctx.getBean(name);
}
public static AsyncBiz asyncBiz() throws BeansException {
return (AsyncBiz) ctx.getBean("asyncBiz");
}
}
可以靈活手動獲得Spring容器中的bean,也可以很好地解決迴圈依賴問題。
相關文章
- Spring Boot @Async 非同步任務執行Spring Boot非同步
- 關於mysql執行效率優化注意事項及要點MySql優化
- MySQL半同步使用注意事項MySql
- @Transactional spring 配置事務 注意事項Spring
- Spring非同步Async和事務Transactional註解Spring非同步
- JAVA多執行緒使用場景和注意事項Java執行緒
- 多執行緒-NSOperation中使用ASIHttpRequest注意事項執行緒HTTP
- 關於mysqldump備份非事務表的注意事項MySql
- spring cloud開發、部署注意事項SpringCloud
- promise、async和await之執行順序的那點事PromiseAI
- LLDB斷點除錯注意事項LLDB斷點除錯
- 執行緒問題2(注意例項變數)執行緒變數
- struts2 + urlrewrite 整合注意事項
- Db2恢復注意事項DB2
- Spring Boot使用@Async實現非同步呼叫:自定義執行緒池Spring Boot非同步執行緒
- Spring+SpringMvc+Mybatis整合注意事項SpringMVCMyBatis
- 說點JSON使用的注意事項JSON
- Python執行緒專題8:使用鎖的注意事項Python執行緒
- 多執行緒CreateThread函式的用法及注意事項執行緒thread函式
- 2. Go中defer使用注意事項Go
- 多執行緒合集(二)---非同步的那些事,async和await原理拋析執行緒非同步AI
- 非同步/同步,阻塞/非阻塞,單執行緒/多執行緒概念梳理非同步執行緒
- P2P平臺專案建設幾點注意事項
- RandomAccessFile注意事項randomMac
- nginx 注意事項Nginx
- @Lombok注意事項Lombok
- 幾種簡潔建立執行緒的方式以及使用注意事項執行緒
- 淺談執行緒池(下):相關試驗及注意事項執行緒
- 【Net】StreamWriter.Write 的一點注意事項
- 關於MongoDB的幾點注意事項UMMongoDB
- Python Enum 使用的幾點注意事項Python
- View手動切換焦點注意事項View
- Oracle Expdp/Impdp 進行資料遷移的 幾點注意事項Oracle
- 程式執行緒、同步非同步、阻塞非阻塞、併發並行執行緒非同步並行
- MySQL 5.5 主從複製非同步、半同步以及注意事項詳解MySql非同步
- [FFMpeg] 非標準解析度視訊Dump YUV注意事項
- iPhone開發進階(11)--- 多執行緒的使用與注意事項iPhone執行緒
- spring-data-jpa使用快取的注意事項Spring快取