ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Spring boot Filter无法注入redisTemplate

2020-12-20 00:02:13  阅读:185  来源: 互联网

标签:Spring boot springframework Filter bean FilterRegistrationBean import loginFilte


看了好多大佬的文章,并没有很好的解决问题。
描述一下版本

  <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.3.RELEASE</version>
    </parent>

描述一下原因
就是在Filter中

@Autowired
private RedisTemplate<String, String> redisTemplate;

引用redisTemplate 会报空指针异常

但是此现象在内置tomcat中jar启动无异常
但是install war 放在tomcat下面运行就会有该异常,具体还没有研究,有知道的小伙伴留言告知一下。

原因就是Filter加载的时候Ioc还没有注入,所以会报空指针
我的问题
因为之前我的Filter是这么写的。

在这里插入图片描述
这样就不能使用
@Configuration
来指定bean加载的顺序

所以先改造一下Filter的写法
去掉@WebFilter(urlPatterns = “/*”, filterName = “loginFilter”)
在这里插入图片描述
然后写一个@Configuration类

package com.comp.user;

import javax.servlet.Filter;

import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.comp.user.filter.LoginFilter;

@Configuration
public class FilterConfig {
	@Bean
	public FilterRegistrationBean<Filter> filterRegistrationBean() {
		FilterRegistrationBean<Filter> bean = new FilterRegistrationBean<Filter>();
		bean.setFilter(loginFilter());
		bean.addUrlPatterns("/*");
		bean.setName("loginFilter");
		return bean;
	}

	@Bean
	public LoginFilter loginFilter() {
		return new LoginFilter();
	}

}

标签:Spring,boot,springframework,Filter,bean,FilterRegistrationBean,import,loginFilte
来源: https://blog.csdn.net/u013177381/article/details/111412251

专注分享技术,共同学习,共同进步。侵权联系[admin#icode9.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有