栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java Spring @Transaction方法由同一类中的方法调用,不起作用吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java Spring @Transaction方法由同一类中的方法调用,不起作用吗?

这里的问题是,Spring的AOP代理不会扩展,而是包装你的服务实例以拦截调用。这样的结果是,在你的服务实例中直接调用该服务实例中对“ this”的任何调用,并且包装代理不能截获该调用(该代理甚至不知道任何此类调用)。已经提到一种解决方案。另一个不错的选择是让Spring将服务的一个实例注入到服务本身中,然后在注入的实例上调用你的方法,该实例将成为处理事务的代理。但是请注意,如果你的服务bean不是单例的,这也会带来不良的副作用:

<bean id="userService" >  <property name="self" ref="userService" />    ...</bean>public class UserService {    private UserService self;    public void setSelf(UserService self) {        this.self = self;    }    @Transactional    public boolean addUser(String userName, String password) {        try {        // call DAO layer and adds to database.        } catch (Throwable e) { TransactionAspectSupport.currentTransactionStatus()     .setRollbackonly();        }    }    public boolean addUsers(List<User> users) {        for (User user : users) { self.addUser(user.getUserName, user.getPassword);        }    } }


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/441729.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号