示例问题代码:

@webfilter(filtername = "authorizefilter", urlpatterns = {"*.htm", "*.html"}, asyncsupported = true)
public class authorizefilter implements filter {

	@autowired
	private otherbean otherbean;

	@override
    public void init(filterconfig filterconfig) throws servletexception {

    }

    @override
    public void destroy() {

    }

    @override
    public void dofilter(servletrequest request, servletresponse response,
                         filterchain chain) throws ioexception, servletexception {
        // true
		system.out.println(otherbean == null);
	}
}

现象:

本地运行测试均可通过,上测试环境后运行注入bean为空
现象:使用外置tomcat可触发,本地使用内置tomcat则无此问题

解决代码

@component
public class authorizefilter implements filter {

	@autowired
	private otherbean otherbean;

	@override
    public void init(filterconfig filterconfig) throws servletexception {

    }

    @override
    public void destroy() {

    }

    @override
    public void dofilter(servletrequest request, servletresponse response,
                         filterchain chain) throws ioexception, servletexception {
        // false
		system.out.println(otherbean == null);
	}
}
@configuration
public class webfilterconfig implements webmvcconfigurer {

    @autowired
    private authorizefilter authorizefilter;

    @bean("authorizefilterbean")
    public filterregistrationbean authorizefilterbean() {
        filterregistrationbean registration = new filterregistrationbean();
        registration.setfilter(authorizefilter);
        registration.addurlpatterns(new string[]{"*.htm", "*.html"});
        registration.setname("authorizefilter");
        registration.setasyncsupported(true);
        return registration;
    }

}

启动类加上:@servletcomponentscan({“com.hybase.site.filter”})

到此这篇关于springboot @webfilter无法注入其他bean的示例问题的文章就介绍到这了,更多相关springboot 无法注入bean内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!