【发布时间】:2017-03-01 20:48:27
【问题描述】:
我想从OncePerRequestFilter类访问一个spring组件,但是当我访问服务时得到空指针,我认为这是配置的原因。 我认为由于配置,过滤器在 spring 调度程序 servlet 之前被调用。有什么好的方法可以完成这项工作,请提出建议。
<servlet>
<servlet-name>SpringDispatcherServer</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/springConfig.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>SpringDispatcherServer</servlet-name>
<url-pattern>/test/api/*</url-pattern>
</servlet-mapping>
<filter>
<filter-name>AuthCheck</filter-name>
<filter-class>org.test.util.AuthCheckFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>AuthCheck</filter-name>
<url-pattern>/test/api/*</url-pattern>
</filter-mapping>`
public class AuthCheckFilter extends OncePerRequestFilter
{
@Autowired
private AuthCheckService authCheckService;
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
log.info("authCheckService"+authCheckService);
记录器为“authCheckService”打印空
【问题讨论】:
-
添加
AuthCheckFilter的代码。 -
不确定上面的链接是否有帮助,因为控件甚至不会转到“Spring Dispatcher Servlet”,所以即使我们在spring config xml中将Filter注册为bean,它也不会我想帮助我们。
-
我不知道我是幸运还是问题已经解决,但春季版本为 4.3.3。自动接线对我有用,没有任何问题。
标签: spring spring-mvc filter