


Introduction to the method of interceptor injecting beans in SpringBoot (code example)
Feb 16, 2019 am 11:59 AMThe 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); } }
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 { } }
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!

Hot Article

Hot tools Tags

Hot Article

Hot Article Tags

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

How Springboot integrates Jasypt to implement configuration file encryption

How to use Redis to implement distributed locks in SpringBoot

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

Comparison and difference analysis between SpringBoot and SpringMVC

How SpringBoot customizes Redis to implement cache serialization

How to get the value in application.yml in springboot

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