简介
本文档主要介绍spring boot V2.0.5 版本的使用,主要包含五个内容:
- 缓存
- 请求REST API
本文档代码下载地址:https://github.com/yushao4170/springboot2.0.5-demo
1.缓存-Cache
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
application.properties
spring.cache.type=SIMPLE
spring.cache.cache-names=cache
各类型缓存介绍
缓存支持的类型有:Generic / JCache/EhCache/Hazelcast/Infinispan/Couchbase/Redis/Caffeine/Simple
- JCache
spring.cache.type=JCache
spring.cache.jcache.provider=com.acme.MyCachingProvider
spring.cache.jcache.config=classpath:acme.xml
- EhCache
spring.cache.type=EhCache
spring.cache.ehcache.config=classpath:config/another-config.xml
- Infinispan
spring.cache.type=Infinispan
spring.cache.infinispan.config=infinispan.xml
- Couchbase
spring.cache.type=Couchbase
spring.cache.cache-names=cache1,cache2
- Redis
spring.cache.type=Redis
spring.redis.database=1
spring.redis.host=xx.xx.xx.xx
#spring.redis.password=123456
spring.redis.pool.max-active=8
spring.redis.pool.max-idle=8
spring.redis.pool.max-wait=-1
spring.redis.pool.min-idle=0
spring.redis.port=6379
spring.redis.timeout=0
缓存注解使用
package com.example.demo.service;
import java.util.List;
import javax.transaction.Transactional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import com.example.demo.entity.City;
import com.example.demo.repository.CityRespository;
/**
* @author guoyu.huang
* @version 1.0.0
*/
@Service
public class CityService {
@Autowired
private CityRespository cityRespository;
@Cacheable(cacheNames = "cache", key = "'all'")
public List<City> getCitys() {
List<City> cities = cityRespository.findAll();
return cities;
}
@CacheEvict(cacheNames = "cache", key = "'all'")
@Transactional
public City save(City city) {
city = cityRespository.save(city);
return city;
}
@CacheEvict(cacheNames = "cache", key = "'all'")
@Transactional
public int updateNameById(String id, String name) {
return cityRespository.updateNameById(name, id);
}
@CacheEvict(cacheNames = "cache", key = "'all'")
@Transactional
public int updateNameByIds(List<String> ids, String name) {
return cityRespository.updateNameByIds(name, ids);
}
}
注解中的key值可以使用表达式,案例中使用了魔法值
2.RestTemplate
package com.example.demo.service;
import java.util.Arrays;
import java.util.List;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import com.example.demo.entity.City;
/**
* @author guoyu.huang
* @version 1.0.0
*/
@Service
public class RestTemplateSerivce {
private final RestTemplate restTemplate;
public RestTemplateSerivce(RestTemplateBuilder restTemplateBuilder) {
this.restTemplate = restTemplateBuilder.build();
}
public List<City> getCity() {
ResponseEntity<City[]> cities = this.restTemplate.exchange("http://127.0.0.1:8080/city/get", HttpMethod.GET,
null, City[].class);
return Arrays.asList(cities.getBody());
}
}
Spring Boot新特性:Spring Web Flux,支持使用WebClient,大家可以学习。