码迷,mamicode.com
首页 > 编程语言 > 详细

spring boot(四)事务与缓存

时间:2018-07-03 00:17:16      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:scac   名称   size   使用   top   异常   ble   存储   针对   

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;

}

}

spring boot(四)事务与缓存

标签:scac   名称   size   使用   top   异常   ble   存储   针对   

原文地址:http://blog.51cto.com/13580976/2135269

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!