Spring拦截器的Java配置,其中拦截器使用自动装配的Spring Bean

发布于 2021-02-02 11:32:52

我想将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

据我了解,由于java config使用new创建对象,因此spring不会自动将依赖项注入其中。

我如何在Java配置中添加这样的拦截器?

关注者
0
被浏览
129
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    只需执行以下操作:

    @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注入相关字段。

    可以在此处找到有关Spring
    MVC配置的常规自定义文档,特别是对于Interceptor,请参阅节。



推荐阅读
知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看