文章目录
Nacos配置管理
统一配置管理
在Controller层编辑测试类
java
@Value("${pattern.dateformat}")
private String dateformat;
@GetMapping("now")
public String now(){
return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat));
}
结果
配置热更新
配置共享
搭建Nacos集群
Feign远程调用
介绍
新建接口类
java
@FeignClient("userservice")
public interface UserClient {
@GetMapping("/user/{id}")
User findByID(@PathVariable("id") Long id);
}
服务端
java
@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服务网关
介绍
搭建网关服务
路由断言工厂
路由过滤器
全局过滤器
java
@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();
}
}
过滤器执行顺序
跨域问题处理