【问题标题】:Spring boot. Mapping 2 seperate project controllers ignoring a project弹簧靴。映射 2 个单独的项目控制器忽略项目
【发布时间】: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


【解决方案1】:

和上面的 cmets 一样

在上下文扫描中列出了错误的包

【讨论】:

    猜你喜欢
    • 2019-07-10
    • 1970-01-01
    • 2021-12-08
    • 2018-02-14
    • 2017-07-29
    • 2017-07-06
    • 2021-02-16
    • 2023-03-29
    • 1970-01-01
    相关资源
    最近更新 更多