文章目录
Nacos配置管理
统一配置管理





在Controller层编辑测试类
@Value("${pattern.dateformat}")
private String dateformat;
@GetMapping("now")
public String now(){
return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat));
}
结果


配置热更新


配置共享



搭建Nacos集群


Feign远程调用
介绍



新建接口类
@FeignClient("userservice")
public interface UserClient {
@GetMapping("/user/{id}")
User findByID(@PathVariable("id") Long id);
}
服务端
@Autowired
private UserClient userClient;
public Order queryOrderById(Long orderId) {
// 1.查询订单
Order order = orderMapper.findById(orderId);
//2.Feign远程调用,查询用户
User user = userClient.findByID(order.getUserId());
//3.封装User到Order
order.setUser(user);
// 4.返回
return order;
}

自定义配置




性能优化



最佳实践




Gateway服务网关
介绍


搭建网关服务




路由断言工厂

路由过滤器




全局过滤器



@Component
@Order(-1)
public class AuthorizeFilter implements GlobalFilter {
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
//1.获取请求参数
ServerHttpRequest request = exchange.getRequest();
MultiValueMap<String, String> params = request.getQueryParams();
//2.获取参数中的authorization参数
String auth = params.getFirst("authorization");
//3.判断参数值是否等于admin
if ("admin".equals(auth)){
//4. 是,放行
return chain.filter(exchange);
}
//5. 否,拦截
//5.1设置状态码
exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);
//5.2拦截请求
return exchange.getResponse().setComplete();
}
}
过滤器执行顺序


跨域问题处理











