自定义Enable**

随手记录一下。

import org.springframework.context.annotation.Import;

import java.lang.annotation.*;

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@Import({RoleCheckConfig.class})
public @interface EnableRoleCheck {
}
import com.cx.demo_role_check.filter.RoleCheckFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;

import javax.servlet.Filter;

public class RoleCheckConfig {
    
    public RoleCheckConfig() {
    }

    //注入filter
    @Bean
    public RoleCheckFilter roleCheckFilter(){
        return new RoleCheckFilter();
    }

    //将Filter注册到web
    @Bean
    public FilterRegistrationBean roleCheckFilterRegistration(RoleCheckFilter roleCheckFilter){
        FilterRegistrationBean filterFilterRegistrationBean = new FilterRegistrationBean<>();
        filterFilterRegistrationBean.setFilter(roleCheckFilter);
        filterFilterRegistrationBean.setName("roleCheckFilter");
        return filterFilterRegistrationBean;
    }



}
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class RoleCheckFilter implements Filter {

    private String excludeURLRole;
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("init");
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest httpServletRequest = (HttpServletRequest)request;
        HttpServletResponse httpServletResponse = (HttpServletResponse) response;
        System.out.println(httpServletRequest.getRequestURI());
        //实现过滤器的功能
        if (false){//条件判断  未通过校验 不可以访问
            httpServletResponse.setStatus(403);
        }else{//直接访问接口
            filterChain.doFilter(request,response);
        }
    }

    @Override
    public void destroy() {
        System.out.println("destroy");
    }
}

在其他的项目里面引用相关的jar,启动类上加上相关的注解,功能即可生效。


    com.cx
    demo_role_check
    0.0.1-SNAPSHOT
import com.cx.demo_role_check.config.EnableRoleCheck;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@EnableRoleCheck
public class DemoRoleCheckTestApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoRoleCheckTestApplication.class, args);
    }

}

你可能感兴趣的:(java)