spring boot事务与缓存

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring boot事务与缓存相关的知识,希望对你有一定的参考价值。

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事务与缓存的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot缓存注解@Cacheable@CacheEvict@CachePut使用

spring boot 高级-缓存消息

Spring Boot 揭秘与实战 数据缓存篇 - 快速入门

剑指架构师系列-InnoDB存储引擎Spring事务与缓存

spring boot集成redis缓存

Spring Boot整合EhCache