【SpringCloud分布式框架搭建】gateway网关,动态路由配置,使用Mysql,存储路由,实现集群gateway动态路由【一】
最新版本,已更改为redis存储,并新增了 token验证以及token的动态过滤验证
GitHub 地址:https://github.com/seowen808/springCloud
1、创建 与表对应的 pojo、service、controller。如下:
pojo:
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import com.keda.bean.common.BasePojo;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* gateway动态路由配置表
* </p>
*
* @author seowen
* @since 2019-12-20
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
public class GatewayDynamicRoute extends BasePojo<GatewayDynamicRoute> {
private static final long serialVersionUID = 1L;
/**
* 路由Id
*/
@TableField("route_id")
private String routeId;
/**
* 路由规则转发的uri
*/
@TableField("`uri`")
private String uri;
/**
* 路由的执行顺序
*/
@TableField("`order`")
private Integer order;
/**
* 路由断言集合配置json串
*/
@TableField("predicate_json")
private String predicates;
/**
* 路由过滤器集合配置json串
*/
@TableField("filter_json")
private String filters;
/**
* 状态:0,"不可用");1,"可用")
*/
@TableField("`enable`")
private Boolean enable;
@Override
protected Serializable pkVal() {
return null;
}
}
BasePojo
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import java.time.LocalDateTime;
/**
* @author seowen
* @since 2019/7/3
*/
@Data
public class BasePojo<T extends BasePojo<?>> extends Model{
/**
* 主键Id
*/
@TableId(type = IdType.INPUT)
@TableField(value = "id")
protected Long id;
/**
* 创建时间
*/
@TableField(value = "create_time")
protected LocalDateTime createTime;
/**
* 修改时间
*/
@TableField(value = "update_time")
protected LocalDateTime updateTime;
/**
* 创建用户id
*/
@TableField(value = "create_user_id")
protected Long createUserId;
/**
* 最后操作者的id
*/
@TableField(value = "last_user_id")
protected Long lastUserId;
private static final long serialVersionUID = 1L;
}
mapper
import com.keda.gateway.entity.GatewayDynamicRoute;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotati