首页 > 解决方案 > 我可以在同一方法上混合使用 @Cacheable 和 @Transactional 等两个 Spring 声明性功能吗?

问题描述

我需要通过使用声明性 Spring 机制使我的服务方法既可缓存又具有事务支持功能。我只想知道 Spring 是否能够解决方法调用的多个代理而没有任何不可接受的副作用。

@Service
public class ServiceImpl implement Service {

    @Autowired
    private MyDao dao;

    @Override
    @Cacheable(value = "cacheName", sync = true)
    @Transactional(readOnly = true)
    public Result produceResult(String arg1, Integer arg2, Integer arg3) {
        Object obj = dao.getSomething(arg1, arg2);
        ...
        Result res = dao.getResult(obj, arg2, ...);

        result res;    
    }

    ...
} 

它工作正常吗?

标签: javaspring

解决方案


推荐阅读