gpt4 book ai didi

java - 如何在 Spring Boot REST 应用程序中重用类?

转载 作者:行者123 更新时间:2023-11-30 02:42:31 24 4
gpt4 key购买 nike

我有一个 Spring Boot REST 应用程序,其中包含 JPA 实体和存储库类(以及相关服务),运行良好。现在我想将这些类重用于其他目的,例如每周 CRON 作业和类似的一次性进程(将从命令行运行)。

最好的方法是什么?挑战在于持久性上下文属性是在 application.properties 中设置的,并且除非初始化 Application 类,否则不会初始化持久性上下文。

我可以将所有这些类分解为一个单独的项目,并使用不同的方式来定义那里的持久性上下文,但如果实体或 DAO 方法发生任何变化,这将变得更加令人头痛。

我真正想要的是有一种方法,从命令行告诉 Spring Boot 运行另一个类而不是主应用程序(并正确初始化持久性上下文)。有办法做到这一点吗?

(注意我问了一个类似的问题但没有得到回应:Possible to use Spring Boot repositories from another main class?)

[编辑]是否可以通过创建一个实现 CommandLineRunner 的 @Component 来做到这一点?我只希望它运行一个简单的一次性进程,而不是完整的 REST 应用程序。

最佳答案

有多种方法可以做到这一点。您可以有多个Main类,然后选择您要启动的应用程序select main class ,但是,如果您不知道 ComponetScan 的工作原理,一不小心就会加载这两个应用程序。

另一种方法是使用 Profiles ,您可以在启动 Spring 应用程序时设置配置文件,然后拥有将启动 Tomcat 的 Web 配置文件和不会启动 Tomcat 的命令行配置文件。

在我正在从事的项目中,我们选择将数据层作为一个完全独立的模块(相同的 gradle 项目),它有自己的 Spring 上下文。然后,数据层 spring 上下文用作其他应用程序的父上下文,作为可重用的组件。如果共享代码被清楚地标记,而不是在同一代码模块中包含多个应用程序,那么这是一种更清晰的关注点分离。

关于java - 如何在 Spring Boot REST 应用程序中重用类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41229785/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com