【问题标题】:java spring boot fetch values from db before starting upjava spring boot在启动之前从db中获取值
【发布时间】:2017-10-06 09:22:54
【问题描述】:

我是 java 和 spring boot 的新手(ard 1 个月经验)。 谁能告诉我如何在启动应用程序之前从内存中加载数据。

例子:

我在数据库中有信息说性别

TABLE : gender
F : Female
M : Male

TABLE : COUNTRY
1 : US
2 : UK
3 : RUSSIA

所以在应用程序启动之前,我希望这些数据应该从数据库中获取并加载到我的应用程序中。

我正在使用 java + sprint boot + JPA

【问题讨论】:

标签: java spring spring-boot jdbc spring-data-jpa


【解决方案1】:

我想说最简单的方法是在应用程序启动后立即执行(在 main 方法中)。

 public static void main(final String[] args) {
    ConfigurableApplicationContext context = SpringApplication.run(Application.class, args);
    context.getBean(YourClass.class).loadFromDatabase(); //Or whatever you want
}

我不知道你为什么在启动之前需要它。您还可以将它包含在其中一个 bean 中(实际需要数据的那个)并使用 @PostConstruct 方法。或者为该 bean 提供一个 Init 方法

【讨论】:

  • 应用程序就绪事件 spring 似乎是更好的选择吗?我也想要这个,因为我说的是实时数据库查询。它还会增加第一次请求的时间
  • 是的,它会增加第一个请求,所以如果你在 main 方法中这样做,它将在应用程序启动时工作
  • 所以你不认为 event 更好,因为我们可以在 startuo 之前完成它
  • 在我看来是一样的。无论您发现什么更具可读性和适合您的目标。这是一篇关于启动生命周期中不同事件的文章:springframework.guru/running-code-on-spring-boot-startup 您可以附加到其中的任何一个
  • 启动后意味着第一个用户会得到延迟响应,之前没有
【解决方案2】:

你可以使用静态块作为你可以加载的地方。

static { // logic to load data from db. }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    • 2019-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多