控制器排除不起作用

时间:2017-08-27 19:14:36

标签: java spring spring-mvc spring-boot

我有2个工件包含在主项目中。第一个包含“com.parent.controller”包。第二个 - “com.child.controller”。

每个包都包含一个控制器 - ParentControllerChildContoller。它们都具有相同的RequestMapping(例如只是“/abc”)。我还为ParentController添加了排除过滤器。但无论如何我有一个例外: java.lang.IllegalStateException: Ambiguous mapping。如何解决?

@SpringBootConfiguration
@EnableAutoConfiguration
@EntityScan(basePackages = {"com.parent", "com.child"})
@ComponentScan(basePackages = {"com.parent", "com.child"}, excludeFilters = {
    @ComponentScan.Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
    @ComponentScan.Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class),
    @ComponentScan.Filter(type = FilterType.REGEX, pattern = "com\\.parent\\..*Controller"),
    @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = ParentController.class)
})

UPD 1 。包层次结构:

- com
  - parent
    - controller
      - ParentController
    - service
    - dao
    - entity
  - child
    - controller
      - ChildController
    - service
    - dao
    - entity

1 个答案:

答案 0 :(得分:2)

不要扫描com.parent root包。分别扫描每个子包,例如com.parent.entities。那时不需要排除。 如果这不起作用,请发布父包和子包层次结构以获取特定说明。