spring boot事務機制redis
spring支持聲明式事務,用@Tracsational註解在方法上代表該方法須要事務支持。被註解的方法在被調用時開啓一個新的事務,當方法無異常結束時,spring會提交這個事務。spring
屬性:propagation,定義事務的生命週期;isolation,隔離,決定事務的完整性;timeout,事務過時時間;readonly,只讀事務;rollback,指定哪些異常能夠引發事務回滾;norollback,哪些異常不能夠引發事務回滾。數據庫
spring data JPA對全部的默認方法都開啓了事務支持。緩存
1.實體類Personide
2.repository實體類PersonRepository測試
3.service:spa
public class DemoServiceImpl implements DemoService{orm
@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;
}
}