@SpringBootApplication
@ComponentScan(nameGenerator = FullyQualifiedAnnotationBeanNameGenerator.class)
public class Main {
public static void main(String[] args) {
SpringApplication.run(Main.class, args);
}
}
@RestController
@RequestMapping("/test")
public class TestAction {
@RequestMapping("/aaa")
public String aaa(){
return "aaa";
}
}
Caused by: java.lang.IllegalStateException: Ambiguous mapping. Cannot map 'testAction' method
org.example.action.TestAction#aaa()
to { [/test/aaa]}: There is already 'org.example.action.TestAction' bean method
org.example.action.TestAction#aaa() mapped.
可是只定义了一个Action
或者去掉nameGenerator 就正常
我猜是这样的:
@SpringBootApplication
已经包含了 @ComponentScan
,默认就会扫描当前包,及其子包下的组件。
而你又定义了一个 @ComponentScan
扫描了 FullyQualifiedAnnotationBeanNameGenerator
类所在的包。
这两次扫描,都加载了同一个 Controller,所以导致映射冲突。
谢谢。应该是这问题,配置到
@SpringBootApplication(nameGenerator = FullyQualifiedAnnotationBeanNameGenerator.class) 就行了
1 个赞