Itu*_*blo 40 java spring servlets servlet-filters
我已经定义了一个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() {
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
我想把豆子放进UsersConnectionRepository去Filter,所以我尝试了以下方法:
public void init(FilterConfig filterConfig) throws ServletException {
UsersConnectionRepository bean = (UsersConnectionRepository) filterConfig.getServletContext().getAttribute("#{connectionFactoryLocator}");
}
Run Code Online (Sandbox Code Playgroud)
但它总是回归null.我怎样才能获得一个Spring bean Filter?
Boz*_*zho 66
有三种方式:
用途WebApplicationContextUtils:
public void init(FilterConfig cfg) {
ApplicationContext ctx = WebApplicationContextUtils
.getRequiredWebApplicationContext(cfg.getServletContext());
this.bean = ctx.getBean(YourBeanType.class);
}
Run Code Online (Sandbox Code Playgroud)使用DelegatingFilterProxy- 映射该过滤器,并将过滤器声明为bean.然后,委托代理将调用实现该Filter接口的所有bean .
@Configurable在您的过滤器上使用.我更喜欢其他两个选项中的一个.(此选项使用aspectj编织)
Tom*_*icz 33
尝试:
UsersConnectionRepository bean =
(UsersConnectionRepository)WebApplicationContextUtils.
getRequiredWebApplicationContext(filterConfig.getServletContext()).
getBean("usersConnectionRepository");
Run Code Online (Sandbox Code Playgroud)
usersConnectionRepository应用程序上下文中bean的名称/ id 在哪里.甚至更好:
UsersConnectionRepository bean = WebApplicationContextUtils.
getRequiredWebApplicationContext(filterConfig.getServletContext()).
getBean(UsersConnectionRepository.class);
Run Code Online (Sandbox Code Playgroud)
还可以查看GenericFilterBean及其子类.
Ela*_*bak 20
Spring有一个实用工具.
在您的Filter代码中,覆盖init方法,如下所示:
public void init(FilterConfig cfg) {
super.init(cfg);
SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
}
Run Code Online (Sandbox Code Playgroud)
然后你只需将bean注入该过滤器,就像你注入的任何其他bean一样.
@Inject
private UsersConnectionRepository repository;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
40279 次 |
| 最近记录: |