11、Spring Boot——XML、拦截器

XML配置

这里为方便就直接写在上篇的cors1中了
创建一个名为HelloService的类,然后不在这个类中加@Service的注解
11、Spring Boot——XML、拦截器_第1张图片由于没有加注解,那么这个HelloService现在没有注册到Spring容器中去,在这里注册呢,我不加注解注册,我也不用Bean注册,而是创建一个名为beans.xml的XML文件去注册,任何在这个文件中去配置HelloService:
11、Spring Boot——XML、拦截器_第2张图片那么这个时候,这个HelloService实际上事用不了的,因为已启动项目,如果想要在Cotroller中注入HelloService是没有的,会报错:
11、Spring Boot——XML、拦截器_第3张图片因为自定义的XML文件,正常情况下是不会被自动加载的,所以如果想要这个XML文件被加载,需要我们手动的做一件事,在配置类WebMvcConfig中添加导入资源注解@ImportResource,在这个注解中配置资源所在的位置
11、Spring Boot——XML、拦截器_第4张图片这样就行了,可以在Controller中注入HelloService了,错误提示也而没了
11、Spring Boot——XML、拦截器_第5张图片运行结果:
11、Spring Boot——XML、拦截器_第6张图片

拦截器

拦截器在家在SpringMVC中应该都用过,相当于一种AOP风格的过滤器,我们一般不用框架就用过滤器,用了框架的话一般来说用拦截器,拦截器是一种AOP风格的。那么以前写的时候都是在XML文件中配置拦截器的,在SpringBoot中不使用XML文件该如何配置呢?首先创建一个MyInterceptor1的类实现HandlerInterceptor,在这里面就简单的打印以下日志:

public class MyInterceptor1 implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("preHandle");
        //注意这里一定要返回一个true后面的才会执行
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("postHandle");
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("afterCompletion");
    }
}

拦截器写好之后,接下来我们要如何去注册呢?以前在XML文件中的写法是:
11、Spring Boot——XML、拦截器_第7张图片


        
            
            
             
        
    

也可以配置多个拦截器,一个interceptor就代表一个拦截器,要除去哪些路径,这些路径不拦截,这是以前在XML文件中的配置。那么现在在Java代码中要如何去配置它呢?很简单,在配置文件WebMvcConfig中实现addInterceptors方法跟在XML中能够配置的参数是一样的:
11、Spring Boot——XML、拦截器_第8张图片
附代码:

 @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new MyInterceptor1()).addPathPatterns("/**");
    }

这样就可以了,我们来运行看一下,访问http://localhost:8080/hello后我们可以=看到控制台打印出了如下信息,说明拦截器已经生效了
11、Spring Boot——XML、拦截器_第9张图片

你可能感兴趣的:(Spring,Boot,Spring,Boot,XML,拦截器)