一、实现过滤类Filter
@Component
@Slf4j
public class RequestUrlFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
//获取http信息
HttpServletRequest httpServletRequest= (HttpServletRequest) servletRequest;
log.info("【请求路径】"+httpServletRequest.getRequestURL());
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
public void destroy() {
}
}
二、注册Filter信息
@Configuration
@ConditionalOnClass(RequestUrlFilter.class) //当存在类RequestUrlFilter时加载
public class RequestUrlFilterAutoConfiguration {
/**
* @author 袁彪
* @description
* @params 实现Filter注册
* @return org.springframework.boot.web.servlet.FilterRegistrationBean<com.yuan.config.log.RequestUrlFilter>
* @throws
* @date 2020/4/23 16:48
*/
@ConditionalOnMissingBean(RequestUrlFilter.class) //只有容器中没有RequestUrlFilter Bean的时候才注入
@Bean
public FilterRegistrationBean<RequestUrlFilter> requestUrlFilter(){
FilterRegistrationBean<RequestUrlFilter> registrationBean = new FilterRegistrationBean<>();
registrationBean.setFilter(new RequestUrlFilter()); //自定义过滤器
registrationBean.addUrlPatterns("/*"); //设置路径
registrationBean.setName("requestUrlFilter"); //设置过滤器名称
registrationBean.setOrder(1); //设置优先级
return registrationBean;
}
}
三、定义自定义注解,引用filter功能
/**
* @author 袁彪
* @description 日志注解
* @date 2020/4/23 16:25
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Import(RequestUrlFilterAutoConfiguration.class) //引用过滤器功能
public @interface LogAnno {
}