我想将spring mvc拦截器添加为Java配置的一部分。我已经有一个基于xml的配置,但是我正在尝试转到Java配置。对于拦截器,我知道可以通过spring文档中的方法来做到这一点-
@EnableWebMvc @Configuration public class WebConfig extends WebMvcConfigurerAdapter { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new LocaleInterceptor()); } }
但是我的拦截器使用的是自动连接到其中的spring bean,如下所示:
public class LocaleInterceptor extends HandlerInterceptorAdaptor { @Autowired ISomeService someService; ... }
SomeService类如下所示:
@Service public class SomeService implements ISomeService { ... }
我正在使用注释@Service来扫描Bean,但尚未在配置类中将其指定为@Bean
@Service
@Bean
据我了解,由于java config使用new创建对象,因此spring不会自动将依赖项注入其中。
我如何在Java配置中添加这样的拦截器?
只需执行以下操作:
@EnableWebMvc @Configuration public class WebConfig extends WebMvcConfigurerAdapter { @Bean LocaleInterceptor localInterceptor() { return new LocalInterceptor(); } @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(localeInterceptor()); } }
当然,LocaleInterceptor需要在某处(XML,Java Config或使用批注)将其配置为Spring bean,以便WebConfig注入相关字段。
LocaleInterceptor
WebConfig
可以在此处找到有关Spring MVC配置的常规自定义文档,特别是对于Interceptor,请参阅本节。