覆盖Spring控制器映射

时间:2018-01-27 00:11:14

标签: java spring spring-mvc

我有一个问题,我在项目上工作,其中一些部分取自已存在于JAR文件中的遗留代码。已经从这些JAR文件导入了一些Spring控制器。我希望通过扩展这些类并创建/编写新方法,在这些导入的控制器中进行Override映射。不幸的是,我无法创建新的映射,因为我不知道旧映射出现了多少个地方,看起来整个系统是不可能的。因为我想在相同的映射上添加一些新功能,我尝试排除旧的(导入的)控制器,并且还排除了导入旧控制器的配置文件:

@ComponentScan.Filter(type = FilterType.REGEX)

Spring回来时出现了重复映射的问题,并且不允许我正确部署应用程序。

是否有任何选项可以从应用程序中排除控制器或检查控制器bean注入应用程序的位置并覆盖它?

1 个答案:

答案 0 :(得分:2)

您可以排除来自Spring 组件扫描的类或包,如下所示。

@Configuration
@ComponentScan(            
        excludeFilters = {
                @ComponentScan.Filter(type = FilterType.REGEX, pattern = "org.aaa.bbb.*"),
                @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = MyClassToExclude.class) })

通过这种方式,您可以排除旧版类。