使用到的注解:@Configuration,@Component,@Bean,@Aspect,@PostConstruct,@Slf4j
使用到的技术点:Filter声明注册以及执行顺序,Interceptor声明注册以及执行顺序,WebMvcConfigurer接口应用,Slf4j注解配置文件定义
以日志分析,以上配置设置的执行顺序
测试项目目录如下:
在项目启动过程中执行的内容
SpringBoot项目有@EnableAutoConfiguration自动装配功能,即项目启动时会自动执行组件注解下@Bean注解的所有方法
自定义过滤器Filter
1. 先声明自定义Filter,继承Filter接口,重写init,doFilter,destroy方法
AuthenticationFilter类
package com.test.springboot.filter;
import lombok.extern.slf4j.Slf4j;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@Slf4j
public class AuthenticationFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
log.info("******Filter的init方法执行******");
}
/**
* 过滤哪些请求可以放行,一般此方法中会写是否在登录有效期
* @param servletRequest
* @param servletResponse
* @param filterChain
* @throws IOException
* @throws ServletException
*/
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) {
log.info("******Filter的doFilter方法执行******");
try {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
filterChain.doFilter(servletRequest,servletResponse);
} catch (Exception e) {
log.error("doFilter 执行异常,异常信息 : {}",e);
}
}
@Override
public void destroy() {
log.info("******Filter的destroy方法执行******");
}
}
2. 注册自定义Filter,FilterRegistrationBean中set自定义的Filter
FilterConfig类
package com.test.springboot.config;
import com.test.springboot.filter.AuthenticationFilter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@S