在Spring 3.1中,<mvc:interceptors>可以与@Configuration一起使用</mvc:interceptors>

时间:2012-04-30 23:52:42

标签: spring-mvc configuration spring-3 spring-annotations

我从Spring 3.0.5迁移到3.1,因为我需要自定义RequestMappingHandlerMapping。我在扩展RequestMappingHandlerMapping的插件中遇到问题 - 我有现有的servlet-conetxt.xml,我添加了带有@Configuration注释的WebConfig。但是,我总是得到错误ambiguos映射(因为在ExtendedRequestMappingHandlerMapping中定义的新注释不是有效的)。

我在servlet-context.xml中定义了各种级别的拦截器,我想保留在XML配置中。我想用。

有没有办法使用servlet-context.xml的连接,同时扩展RequestMappingHandlerMapping。如果必须使用@COnfiguration完成 - 我可以同时使用@COnfiguration和servlet-context.xml吗?任何帮助都会受到赞赏,因为我很久以来一直在尝试这个。

<context-param>
    <param-name>contextClass</param-name>
    <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
</context-param>

<context-param>
 <param-name>contextConfigLocation</param-name>
 <param-value>com.test.config</param-value>
</context-param>

2 个答案:

答案 0 :(得分:7)

是的,您可以使用它: 例如:

@EnableWebMvc
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {

  @Override
  public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(new LocalInterceptor());
    registry.addInterceptor(new SecurityInterceptor()).addPathPatterns("/secure/*");
 }

}

请参阅

http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/mvc.html#mvc-config-interceptors 了解更多详情。

答案 1 :(得分:0)

如果使用

@EnableWebMvc
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
  @Autowired
  Anything anything;

  @Override
  public void addInterceptors(InterceptorRegistry registry) {
     log.info(anything.toString());//this will exception,how to fix?
    registry.addInterceptor(new LocalInterceptor());
    registry.addInterceptor(new SecurityInterceptor()).addPathPatterns("/secure/*");
 }

}

@service无法设置为Interceptor