SpringBoot2实现拦截器并读取yml配置的访问路径

①新建application.yml文件,添加如下代码

path:
   include:
      - /admin/**
   exclude:
     - /user/**

②新建配置类存储yml文件中的配置,可自行设置前缀名,与配置文件中前缀名一致即可

@Data
@Component
@ConfigurationProperties(prefix = "path")
public class PathConfig {

	private List<String> include = new ArrayList<>();

	private List<String> exclude = new ArrayList<>();

}

此步骤完成了,当项目启动时,配置文件中的路径就会注入到PathConfig的属性中

注意事项:

1、属性名需要和配置文件中的一致

2、"-"后需要跟一个空格,否则会导致读取的路径名带"-"

③新建主配置类实现WebMvcConfigurer

在Spring Boot 1.5版本都是靠重写WebMvcConfigurerAdapter的方法来添加自定义拦截器,消息转换器等。SpringBoot 2.0 后,该类被标记为@Deprecated。因此我们只能靠实现WebMvcConfigurer接口来实现,类名可自定义

@Configuration
public class LoginAdapter implements WebMvcConfigurer {

	@Autowired
	private PathConfig pathConfig;

	@Override
	public void addInterceptors(InterceptorRegistry registry) {

		InterceptorRegistration ir = registry.addInterceptor(new LoginInterceptor());
		ir.addPathPatterns(pathConfig.getInclude()); // 拦截
		ir.excludePathPatterns(pathConfig.getExclude());// 配置不拦截
	}

}

④新建拦截器类实现HandlerInterceptor

public class LoginInterceptor implements HandlerInterceptor {


	/**
	 * 进入Controller之前
	 */
	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		System.out.println("preHandle里面.....");
		System.err.println("-------"+request.getRequestURI());
		return true;

	}

⑤浏览器输入访问地址

接口自行创建

5.1 浏览器输入http://localhost:8090/admin/hello,可自行调整端口号,我这里设置端口为8090

控制台输出

preHandle里面.....
-------/admin/hello

5.2  浏览器输入http://localhost:8090/user/hello,可自行调整端口号,我这里设置端口为8090

控制台没有输出

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值