【问题标题】:How can I ensure that one spring-boot-starter is loaded before another?如何确保一个 spring-boot-starter 在另一个之前加载?
【发布时间】:2021-10-10 09:28:06
【问题描述】:

我试图确保一个 Spring Boot Starter 在另一个之前加载。在这种情况下,我有一个由我的组织编写的自定义 spring boot 启动器和 spring-boot-starter-data-jpa 启动器。在 spring-boot-starter-data-jpa 初始化之前运行自定义启动器的 bean 至关重要。 pom.xml 中依赖的示例 sn-p:

    <dependencies>
        <dependency>
            <groupId>com.example</groupId>
            <artifactId>spring-boot-starter-my-customer-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
    </dependencies>

如何解决这个问题?我目前正在考虑的解决方案是在我公司的自定义启动器中初始化的 bean 顶部添加 @Primary 注释,不确定这是否可行并在此处寻找最佳实践。我试图在加载 spring-boot-starter-jpa 的 bean 之前在自定义启动器中加载的 bean 负责设置代理设置,因此必须首先加载,以便可以通过代理路由到数据库的流量。

【问题讨论】:

  • 我认为你在这里混淆了一些东西。依赖/构建系统与 CDI 容器(在本例中为 Spring)加载各种 bean 的方式无关。最重要的是,您的问题并没有真正说明原因以及该 bean 的作用是为了对问题提供更清晰的解释。请尝试添加更多信息。
  • @akortex 感谢您的反馈,我添加了一些有关 bean 功能的上下文。

标签: java spring-boot


【解决方案1】:

不太确定您要在这里实现什么,但可以使用DependsOn 注释来控制 bean 创建。

在您的情况下,由于您想在建立实际数据库连接之前初始化您的自定义 bean,我认为将其添加到您的数据库配置类中就足够了。

【讨论】:

    猜你喜欢
    • 2013-08-24
    • 1970-01-01
    • 2017-10-02
    • 1970-01-01
    • 2016-09-08
    • 2017-04-14
    • 2021-11-06
    • 2016-09-10
    • 1970-01-01
    相关资源
    最近更新 更多