springboot多个微服务实现session共享可以通过spring-session实现:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--SpringSession依赖 -->
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-core</artifactId>
</dependency>
<!--SpringSessionRedis依赖 -->
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
简单访问微服务:
Map<String, Object> res = restTemplate.getForObject("http://service-provider/getData.action", Map.class);
如果需要共享session信息必须在head中设置cookie信息
//手动设置header
HttpHeaders header = new HttpHeaders();
List<String> cookies = new ArrayList<>();
Cookie[] cc = request.getCookies();
for (int i = 0; i < cc.length; i++)
{
cookies.add(cc[i].getName() + "=" + cc[i].getValue());
System.out.println(cc[i].getName() + "=" + cc[i].getValue());
}
header.put(HttpHeaders.COOKIE, cookies);
Map<String,Object> param=new HashMap<String,Object>();
HttpEntity httpEntity = new HttpEntity(param, header);
ResponseEntity<Map> res = restTemplate.postForEntity(
"http://service-provider/getData.action", httpEntity, Map.class);