博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring异步执行(@Async)2点注意事项
阅读量:4609 次
发布时间:2019-06-09

本文共 1202 字,大约阅读时间需要 4 分钟。

  Spring中可以异步执行代码,注解方式是使用@Async注解。

  原理、怎么使用,就不说了。

  写2点自己遇到过的问题。

1.方法是公有的

  // 通知归属人

@Async
public void notifyPusher(Project project) {

     

      }

2.异步代码,需要放在外部单独的类中。

   @Service("asyncBiz")

public class AsyncBiz {

    

@Async

public void notifyPusher(Project project) {

     

       }

 据说这是一个“常识”,外部方法才会被Spring拦截器拦截到额。

代码调用示例

@Servicepublic 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);			}			}}

一个工具类

@Componentpublic 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,也可以很好地解决循环依赖问题。

转载于:https://www.cnblogs.com/qitian1/p/6462669.html

你可能感兴趣的文章
智能视频监控软件
查看>>
AlloyRenderingEngine文本框组件
查看>>
DataTable转换为Json格式
查看>>
洛谷P3773 CTSC2017 吉夫特
查看>>
Leetcode661.Image Smoother图片平滑器
查看>>
hql 链接查询
查看>>
java获取指定文件夹下的所有文件名
查看>>
Spring学习十一
查看>>
iOS -- 全局导航栏返回键
查看>>
android 拖拽listview
查看>>
request
查看>>
Python登录人人网并抓取新鲜事
查看>>
RNN教程之-2 LSTM实战
查看>>
计算两个时间之间相隔几个月
查看>>
Windows安装php Oracle扩展
查看>>
【WP开发学习笔记】之页面导航
查看>>
关于WebGIS开源解决方案的探讨
查看>>
Splash Screen 加载窗体 [not finished]
查看>>
练习 - MySQL
查看>>
mongoDB
查看>>