如何在servlet过滤器中获取Spring bean?
我定义了一个,javax.servlet.Filter
并且具有带有Spring注释的Java类。
import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Bean;
@Configuration
public class SocialConfig {
// ...
@Bean
public UsersConnectionRepository usersConnectionRepository() {
// ...
}
}
我想将Bean UsersConnectionRepository
放入我的Filter
,因此尝试了以下操作:
public void init(FilterConfig filterConfig) throws ServletException { UsersConnectionRepository bean = (UsersConnectionRepository) filterConfig.getServletContext().getAttribute("#{connectionFactoryLocator}");
}
但是它总是返回null
。我怎样才能得到一个Spring beanFilter
?
回答:
尝试:
UsersConnectionRepository bean = (UsersConnectionRepository)WebApplicationContextUtils.
getRequiredWebApplicationContext(filterConfig.getServletContext()).
getBean("usersConnectionRepository");
usersConnectionRepository
你的bean在应用程序上下文中的名称/标识在哪里。甚至更好:
UsersConnectionRepository bean = WebApplicationContextUtils. getRequiredWebApplicationContext(filterConfig.getServletContext()).
getBean(UsersConnectionRepository.class);
还可以看看GenericFilterBean及其子类。
以上是 如何在servlet过滤器中获取Spring bean? 的全部内容, 来源链接: utcz.com/qa/420950.html