当前位置: 首页 > 知识库问答 >
问题:

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

梁丘俊人
2023-03-14

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

做这件事最好的方法是什么?挑战在于持久化上下文属性是在Application.properties中设置的,除非初始化了应用程序类,否则不会初始化持久化上下文。

共有1个答案

夹谷硕
2023-03-14

有很多方法可以做到这一点。您可以有多个Main类,然后选择yuo想要启动的应用程序select Main class,但是,如果您不知道ComponetScan是如何工作的,如果您不小心的话,最终会加载两个应用程序。

另一种方法是使用概要文件,您可以在启动spring应用程序时设置概要文件,然后设置将启动Tomcat的web概要文件,以及不启动Tomcat的命令行概要文件。

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

 类似资料:
  • 我使用带有兼容性层的Eclipse4.2来重用我的RCP应用程序的现有部分。 我希望在我的RCP应用程序中重用New from File菜单和Run菜单,为此我打开Eclipse的EMF编辑器,其外观如下所示: 但是对于新菜单,它显示如下内容:

  • 问题内容: 我一直在从事一个更像框架的项目,并且可以安装几个应用程序/模块。像基本的应用商店或google.play商店一样看到它。这是一个Intranet应用程序,所有模块都可以添加到您的用户帐户中。 该框架已经在开发中,但是我现在正在围绕应用程序/模块的想法。(链接到开发中的概念证明,可以在这里找到) 一个应用程序应该是独立的,并且不能突然包含框架中的脚本,这可以通过在单独的模块中进行结构化来

  • 问题内容: 我有一个Swing应用程序,我希望将其从意大利面条转换为对Guice使用依赖项注入。使用Guice提供诸如配置和任务队列之类的服务的过程非常好,但是我现在是从应用程序的GUI开始的,不确定如何进行。 该应用程序基本上是,在中带有一堆标签。每个选项卡都是一个单独的子类,该子类列出了各种组件,并且需要服务才能在按下某些按钮时执行操作。 在当前应用程序中,这看起来像这样: 显然,这并不完全遵

  • 我有Kafka Streams java应用程序启动并运行。我试图使用KSQL创建简单的查询,并使用Kafka流来实现复杂的解决方案。我希望将KSQL和Kafka流作为Java应用程序运行。 我打算通过https://github.com/confluentinc/ksql/blob/master/ksqldb-examples/src/main/java/io/confluent/ksql/em

  • 我正在用c开发一个应用程序,我想使用solr来索引sqlite数据库,我在网上搜索了一下,发现我需要使用JNI:http://randr . svbtle . com/experiment-with-embedded-Solr-in-Java-and-c,但是我发现jar有很多问题(我使用了\solr-4.9.0\dist\solrj-lib和\solr-4.9.0\dist和\solr-4.9.

  • 问题内容: 我正在尝试将Hibernate用于多线程应用程序,其中每个线程都检索一个对象并将其插入表中。我的代码如下所示。我每个线程都有本地hibernate会话对象,在每个InsertData中,我都执行beginTransaction和commit。 我面临的问题是很多次我收到“ org.hibernate.TransactionException:不支持嵌套事务” 由于我是hibernate

  • 问题内容: 是否有一种实际的方法可以在PHP中实现多线程模型,无论是真正的还是仅对其进行仿真。一段时间以前,建议您可以强制操作系统加载PHP可执行文件的另一个实例并处理其他同时进行的进程。 这样做的问题是,当PHP代码完成执行PHP实例后,它仍保留在内存中,因为无法从PHP中杀死它。因此,如果您正在模拟多个线程,则可以想象会发生什么。因此,我仍在寻找一种可以在PHP中有效完成或模拟多线程的方法。有

  • 我试图理解我们什么时候需要使用这个应用程序。在我们的node Express中使用 当我在网上搜索时,我在reddit上偶然发现了这个答案,它说明了应用程序之间的区别。获取和应用程序。使用 在此基础上,我总结了以下几点。 充当超级路由或中间件?这意味着它在? 此外,如果有人能添加更多关于app.use.的信息/练习,我将不胜感激