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;

}

}

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

时间: 2024-11-05 22:51:22

spring boot(四)事务与缓存的相关文章

Spring Boot 整合Redis 实现缓存

本文提纲 一.缓存的应用场景 二.更新缓存的策略 三.运行 springboot-mybatis-redis 工程案例 四.springboot-mybatis-redis 工程代码配置详解 运行环境: Mac OS 10.12.x JDK 8 + Redis 3.2.8 Spring Boot 1.5.1.RELEASE 一.缓存的应用场景 什么是缓存? 在互联网场景下,尤其 2C 端大流量场景下,需要将一些经常展现和不会频繁变更的数据,存放在存取速率更快的地方.缓存就是一个存储器,在技术选型

Spring Boot的事务管理注解@EnableTransactionManagement的使用

Spring Boot 使用事务非常简单,首先使用注解 @EnableTransactionManagement 开启事务支持后,然后在访问数据库的Service方法上添加注解 @Transactional 便可. 关于事务管理器,不管是JPA还是JDBC等都实现自接口 PlatformTransactionManager 如果你添加的是 spring-boot-starter-jdbc 依赖,框架会默认注入 DataSourceTransactionManager 实例.如果你添加的是 spr

spring boot 分布式事务解决方案LCN

对比LCN和saga(华为apache孵化器项目) ,LCN使用代理连接池封装补偿方法,saga需要手工写补偿方法,相对来说LCN使用更加方便. 参考官方地址: https://github.com/codingapi/tx-lcn/wiki/TxManager%E5%90%AF%E5%8A%A8%E8%AF%B4%E6%98%8E 1.    原理 1.     事务控制原理 LCN事务控制原理是由事务模块TxClient下的代理连接池与TxManager的协调配合完成的事务协调控制. TxC

spring boot学习(十三)SpringBoot缓存(EhCache 2.x 篇)

SpringBoot 缓存(EhCache 2.x 篇) SpringBoot 缓存 在 Spring Boot中,通过@EnableCaching注解自动化配置合适的缓存管理器(CacheManager),Spring Boot根据下面的顺序去侦测缓存提供者: * Generic * JCache (JSR-107) * EhCache 2.x * Hazelcast * Infinispan * Redis * Guava * Simple 关于 Spring Boot 的缓存机制: 高速缓

Spring Boot下的Redis缓存实战

最近在做的一个系统涉及到基础数据的频繁调用,大量的网络开销和数据读写给系统带来了极大的性能压力,我们决定引入缓存机制来缓解系统压力. 什么是缓存 提起缓存机制,大概10个程序员总有5种不同的解释吧(姑且认为只有一半的程序员是通过复制粘贴来学习知识的),我也不能免俗的来说说我的理解. 在回答这个问题之前,我们首先要搞清楚为什么要用缓存? 历史唯物主义揭示了社会发展的基本动力是社会基础矛盾. 运用到软件领域同样适用,一种新技术的出现必然是伴随着特定的矛盾产生的,而缓存的出现正是因为介质提供的实际处理

spring boot(四) 多数据源

前言 前一篇中我们使用spring boot+mybatis创建了单一数据源,其中单一数据源不需要我们自己手动创建,spring boot自动配置在程序启动时会替我们创建好数据源. 准备工作 application.yml中配置connection的4个属性 spring: datasource: read: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://192.168.80.129:3306/test username:

Spring Boot (四):打包部署

springboot 打包与部署 一.jar 包 pom文件中packaging: 1.编译 进入项目目录,使用如下命令: //命令打包(-Dmaven.test.skip=true 跳过测试) mvn clean package -Dmaven.test.skip=true或者执行Maven install 2.运行 当前目录的target 就有一个.jar 文件 #启动命令 nohub java -jar xxxx.jar >/dev/null 2>&1 & 二.war 包

spring boot mysql 事务

mysql默认 事务自动提交.即:每条insert/update/delete语句,不需要程序手工提交事务,而是mysql自行提交了. 如果我们想实现程序事务提交,需要事先关闭mysql的自动提交事务. 但是,如果采用spring管理事务,不需要实现关闭mysql自动提交事务的,因为,spring会帮你关闭mysql的自动提交事务. spring: <bean id="txManager" class="org.springframework.jdbc.datasour

spring boot 中 事务配置

package org.whm.appcore; import java.util.Properties; import javax.sql.DataSource; import org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.

spring boot项目之登陆缓存session至redis和cookies

一.将获取的openId(详细步骤见卖家扫码登陆获取openId)作为参数传入到SellerUserController中的login登陆方法. 注:此处设置token,是为了取出时先从cookie中拿出token,再回redis校验 二.将传入的openId去和数据库中的数据进行匹配 三.先在application.yml中设置redis配置,然后再将token设置进redis(token作为value设置进cookie写进response,又作为key设置进redis,相应的value为op