1. 程式人生 > >spring boot(四)事務與緩存

spring boot(四)事務與緩存

autowire manager 控制 nsa color 實體 value ron save

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(四)事務與緩存