【发布时间】:2014-10-23 14:02:21
【问题描述】:
我有一个 spring boot 应用程序,它会加载其他 2 个项目的配置,如下所示:
应用注解:@ImportResource("path/to/xml/config.xml")
映射到 config.xml 包含:
<import resource="classpath:path/to/project1/config.xml"/>
<import resource="classpath:path/to/project2/config.xml"/>
这些 config.xml 分别包含以下几行:
<context:component-scan base-package="my.project1.package" />
<context:component-scan base-package="my.project2.package" />
在这些包中我有一个控制器:
项目 1 控制器
package my.project1.package;
@RestController
@RequestMapping("/project1")
@SessionAttributes("batchNumber")
public class Project1Controller {
@RequestMapping(value="/sample", method = RequestMethod.GET)
public String sampleMethod() {
return "hi";
}
}
和项目 2 控制器:
package my.project2.package;
@RestController
@RequestMapping("/project2")
@SessionAttributes("batchNumber")
public class Project2Controller {
@RequestMapping(value="/sample", method = RequestMethod.GET)
public String sampleMethod() {
return "hi2";
}
}
是的,方法名及其映射需要相同,只是类的ReqeustMapping不同。
当我使用 Spring Boot 启动我的应用程序时。
我得到了Mapped [/project1/sample] 行,它工作正常,但是/project2/sample 永远不会被映射。
这些控制器没有被映射/扫描是否有可能的原因?
【问题讨论】:
-
如果未注册,则不会扫描。此外,映射与重要的完整路径不同,如果映射相同,则会出现错误。
-
知道除了上面列出的映射之外还需要其他什么东西来完成映射吗?我可以比较项目以查看差异,但我不知道在哪里查看
-
确保扫描确实正确。 Spring Boot 应该为您提供一个映射到哪个控制器/方法的 URL 列表。如果第二个不在其中,则组件扫描根本不会检测到它。
-
是的,问题实际上是我列出了错误的包。没有注意到类似命名的原因。非常感谢。随时发布答案。尽管如此,上述问题样本已经可以工作了
标签: java xml spring tomcat spring-boot