spring boot(四)事務與緩存

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;

}

}

相關文章
相關標籤/搜索