①新建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
控制台没有输出