spring项目中service方法开启线程处理业务的事务问题

1、前段时间在维护项目的时候碰到一个问题,具体业务就是更新已有角色的资源,数据库已更新,但是权限控制不起效果,还是保留原来的权限。

2、排查发现原有的代码在一个service方法里有进行资源权限表的更新,然后再调用另外一个方法通过线程池通知其他业务系统权限已更新。

3、这个问题涉及到在一个service,开启另外一个线程的问题,那么这个线程和service是否处于同一个事务呢?具体代码大致如下。

(1)

public void update(SysRole role) {
        SysRole db=roleDao.update(role);
  notifyOtherSystem();
 }

(2)

public void notifyAllSubSystem() {

  pool.getThreadPool().execute(new OtherSystem(url));

}

由于notifyOtherSystem中的事务和update不属于同一事务导致没有获取到最新的数据。

上一篇:C#网络编程基础知识


下一篇:在linux 服务器上用.htaccess文件实现二级域名访问子目录