【问题标题】:After working with spring state machine breaks spring auto entity scan mecanism使用弹簧状态机后,弹簧自动实体扫描机制中断
【发布时间】:2022-01-22 05:00:44
【问题描述】:

在我添加了 spring 状态机的依赖项后,我的实体被视为非托管类型。添加 @EntityScan 注释并告诉 Spring 在哪里可以找到我们的应用程序中使用的实体后,spring 再次识别了我的实体。我正在使用 spring 状态机的以下依赖项。

<dependency>
    <groupId>org.springframework.statemachine</groupId>
    <artifactId>spring-statemachine-starter</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.statemachine</groupId>
    <artifactId>spring-statemachine-autoconfigure</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.statemachine</groupId>
    <artifactId>spring-statemachine-data-jpa</artifactId>
</dependency>

我认为 spring-statemachine-data-jpa 是问题所在。在文档中摆脱他们正在使用的任何配置问题 spring-statemachine-autoconfigure 并且 @SpringBootApplication 注释足以启动应用程序。但我正在使用 spring-boot-starter-data-jpa 来处理我的数据库模型。

我是否缺少有关弹簧状态机的信息?添加 @EntityScan 后一切正常,但我想知道发生了什么并且自动扫描被破坏了。

【问题讨论】:

  • 我遇到了同样的问题。我相信 spring-statemachine-data-jpa 组件扫描优先。我添加了应用组件

标签: spring spring-boot spring-data spring-statemachine


【解决方案1】:

我认为你是对的。在我的项目中包含 spring-statemachine-data-jpa 依赖项后,我遇到了同样的问题。

不确定根本原因是什么,似乎来自 lib 的存储库组件扫描优先。

为了解决这个问题,我手动映射了未映射的存储库,将它们添加到我的主类中

@EntityScan(basePackages = "name.your.package")
@EnableJpaRepositories(basePackages = "name.your.package")

并将 bean 覆盖的这个标志设置为 true

spring.main.allow-bean-definition-overriding=true

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多