Home Java javaTutorial Introduction to the method of interceptor injecting beans in SpringBoot (code example)

Introduction to the method of interceptor injecting beans in SpringBoot (code example)

Feb 16, 2019 am 11:59 AM
springboot

The content of this article is an introduction to the method of injecting Bean by SpringBoot interceptor (code example). It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.

Due to business needs, the Redis cache needs to be operated in the interceptor. According to the controller and service layer configuration, it is found that it cannot be injected, and a null pointer exception is always reported.

Solution

@Configuration
public class MyWebAppConfigurer extends WebMvcConfigurerAdapter {
 
    /**
      * 将自定义拦截器作为Bean写入配置
      * @return
      */
     @Bean
     public SysInterceptor sysInterceptor() {
      return new SysInterceptor();
     }
     /**
      * 对拦截器注册
      */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        String[] patterns = new String[] {"/swagger-resources/**"};
        registry.addInterceptor(sysInterceptor())
                                 .addPathPatterns("/**")
                                 .excludePathPatterns(patterns);
        super.addInterceptors(registry);
    }
}
Copy after login

Interceptor:

public class SysInterceptor  implements HandlerInterceptor {
    
    private static final Logger logger = LoggerFactory.getLogger(SysInterceptor.class);
    
    @Autowired
    private RedisTemplate<String, String> redisTemplate;

    
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
            Object handler) throws Exception {
            //业务逻辑
         return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
            ModelAndView modelAndView) throws Exception {
        
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response,
            Object handler, Exception ex) throws Exception {
        
    }
}
Copy after login

Query reason

The interceptor is executed in the Bean This problem occurs before initialization. The execution order of each element in web.xml is as follows, context-param-->listener-->filter-->servlet; and the interceptor is configured in Spring MVC. If you look at the entire project , the execution process of a servlet request becomes like this context-param-->listener-->filter-->servlet-->interceptor, why the interceptor is after the servlet is executed, because the interceptor itself is Inside the servlet.

Concept

  • Servlet: A servlet is a java application that runs on the server side, is platform- and protocol-independent, and can be dynamic Generating web pages, it works in the middle layer between client requests and server responses.

  • filter: filter is a reusable code fragment that can be used to transform HTTP requests, responses and header information. Filter is not like Servlet, it cannot generate a request or response, it only modifies the request for a certain resource, or modifies the response from a certain resource.

  • listener: Listener, literally it can be seen that listener is mainly used for listening. Through the listener, you can monitor an execution action in the web server and respond accordingly according to its requirements. In layman's terms, it is a functional component that automatically executes code when the application, session, and request objects are created and destroyed or when attributes are added, modified, or deleted.

  • interceptor: The interceptor is a more detailed application of the filter. It can be applied not only before and after the service method but also before and after the interceptor of other methods.

The above is the detailed content of Introduction to the method of interceptor injecting beans in SpringBoot (code example). For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot Article Tags

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How Springboot integrates Jasypt to implement configuration file encryption How Springboot integrates Jasypt to implement configuration file encryption Jun 01, 2023 am 08:55 AM

How Springboot integrates Jasypt to implement configuration file encryption

How to use Redis to implement distributed locks in SpringBoot How to use Redis to implement distributed locks in SpringBoot Jun 03, 2023 am 08:16 AM

How to use Redis to implement distributed locks in SpringBoot

How SpringBoot integrates Redisson to implement delay queue How SpringBoot integrates Redisson to implement delay queue May 30, 2023 pm 02:40 PM

How SpringBoot integrates Redisson to implement delay queue

How to solve the problem that springboot cannot access the file after reading it into a jar package How to solve the problem that springboot cannot access the file after reading it into a jar package Jun 03, 2023 pm 04:38 PM

How to solve the problem that springboot cannot access the file after reading it into a jar package

Comparison and difference analysis between SpringBoot and SpringMVC Comparison and difference analysis between SpringBoot and SpringMVC Dec 29, 2023 am 11:02 AM

Comparison and difference analysis between SpringBoot and SpringMVC

How SpringBoot customizes Redis to implement cache serialization How SpringBoot customizes Redis to implement cache serialization Jun 03, 2023 am 11:32 AM

How SpringBoot customizes Redis to implement cache serialization

How to get the value in application.yml in springboot How to get the value in application.yml in springboot Jun 03, 2023 pm 06:43 PM

How to get the value in application.yml in springboot

How to implement Springboot+Mybatis-plus without using SQL statements to add multiple tables How to implement Springboot+Mybatis-plus without using SQL statements to add multiple tables Jun 02, 2023 am 11:07 AM

How to implement Springboot+Mybatis-plus without using SQL statements to add multiple tables

See all articles