为了账号安全,请及时绑定邮箱和手机立即绑定

spring boot事务与缓存

标签:
Java

spring boot事务机制

spring支持声明式事务,用@Tracsational注解在方法上表明该方法需要事务支持。被注解的方法在被调用时开启一个新的事务,当方法无异常结束时,spring会提交这个事务。

属性:propagation,定义事务的生命周期;isolation,隔离,决定事务的完整性;timeout,事务过期时间;readonly,只读事务;rollback,指定哪些异常可以引起事务回滚;norollback,哪些异常不可以引起事务回滚。

spring data JPA对所有的默认方法都开启了事务支持。

1.实体类Person

2.repository实体类PersonRepository

3.service:

public  class DemoServiceImpl implements DemoService{

@Autowired

PersonRepository personRepository;

@Transactional(rollbackFor={illegalArgumentException.class}

public Person saveWithRollback(Person p){

Person p = personRepository.save(p);

throw new illegalArgumentException(“回滚“);

return p;

}

@Transactional(norollbackFor={illegalArgumentException.class}

public Person saveWithoutRollback(Person p){

Person p = personRepository.save(p);

throw new illegalArgumentException(“回滚“);

return p;

}

4.controller

5.测试:http://localhost:8080/rollback?name=tom—>控制台抛出异常,数据库没有新增记录

http://localhost:8080/norollback?name=tom—>控制台抛出异常,数据库新增了记录


spring 缓存

cacheManager是spring提供的各种缓存技术抽象接口,cache接口包含缓存的各种操作。针对不同缓存技术,需要实现不同的cacheManager,如simpleCacheManager(使用简单的collection缓存数据,主要用来测试用途);redisCacheManager… …

注解:@cacheable执行前先查看缓存,有数据直接返回,没有数据调用方法并将返回值放进缓存;

@cachePut无论怎样都会将方法的返回值放到缓存中

@cacheevict将一条或多条数据从缓存中删除

@caching组合多个注解策略在一个方法上

@cacheable,@cachePut,@cacheevict都有value属性:要使用的缓存名称;key属性:数据在缓存中存储的键。

eg.  public class DemoServiceImpl {

@Autowired 

PersonRepository  personRepository;

@Override

@CachePut(value=“people”,key=“#person.id”)

public Person save(Person p){

Person p = personRepository.save(p);

return p;

}

}

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
数据库工程师
手记
粉丝
52
获赞与收藏
361

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消