java spring boot在启动之前从db中获取值
Posted
技术标签:
【中文标题】java spring boot在启动之前从db中获取值【英文标题】:java spring boot fetch values from db before starting up 【发布时间】: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
【问题讨论】:
medium.com/@dmarko484/… 【参考方案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.
【讨论】:
以上是关于java spring boot在启动之前从db中获取值的主要内容,如果未能解决你的问题,请参考以下文章
Flyway、Spring Boot 和应用程序在没有数据库的情况下启动
在将应用程序(spring boot)部署到谷歌应用程序引擎时,没有使用sql db?
在我的 spring-boot 应用程序启动之前,我如何等待数据库容器启动
KafkaContainer - 如何在启动()之后在 Spring Boot 中读取 kafka 容器端口作为属性 / 如何在启动之前配置 Kafka 端口