SpringCloud中Feign方式调用远程服务实现国际化
1、Springboot中实现i8n国际化
(1)resources下新建国际化配置文件
(2) 在application.properties中添加
注:文件设置utf-8还出现中文乱码的话,需修改idea文件编码格式
spring.messages.basename=i18n/message spring.messages.encoding=utf-8
(3)添加locale拦截器(localResolver和localeInterceptor)
(4)测试调用
2、Feign调用远程服务
(1)feign配置拦截器
@Slf4j @Configuration public class FeignConfiguration implements RequestInterceptor { @Override public void apply(RequestTemplate template) { ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder .getRequestAttributes(); HttpServletRequest request = attributes.getRequest(); //传递header信息 Enumeration<String> headerNames = request.getHeaderNames(); if (headerNames != null) { while (headerNames.hasMoreElements()) { String name = headerNames.nextElement(); String values = request.getHeader(name); template.header(name, values); } log.info("feign interceptor header:{}", template); } //传递lang String lang = request.getParameter("lang"); template.query("lang", lang); } }
(2)配置注解
@FeignClient(value = "account-service",configuration = FeignConfiguration.class)