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

在应用程序启动期间将@NonBlocking与HIbernate ORM结合使用

晏阳飙
2023-03-14

在我的应用程序中,我需要在启动时初始化数据库中的内容。

以下文章:https://quarkus.io/blog/resteasy-reactive-smart-dispatch/提到以下内容。

“由于Hibernate ORM classic(我们也有Hibernate reactive)是阻塞的,如果不使用@blocking注释,就不能将其与RESTEasy reactive一起使用。该注释将调度策略更改为使用工作线程(而不是I/O线程)。”

通过查看被调用方法的签名,可以简化这些内容。如果签名暗示同步行为,则选择“工作线程”。如果不是,则首选(更快)反应机制(i/o线程)。

它还提到了HiberNate reactive,而不是HiberNate经典。我还没有探索到那个领域。

但是,从这里开始,我想尝试做到以下几点:

@Startup 
@ApplicationScoped
public class I18NBean{

   public static Map<String, String> I18N = init();


   private static Map<String,String> init(){

        // initialize map from DB
   }

   public String translate(String in){
       return I18N.get(in);
   }
}

@Path("/hello")
public class GreetingResource {

  @Inject
  I18NBean translations;

   @POST
   @NonBlocking
   public String hello( String in ) {
       return translations.translate( in );
   }
}

利用资源的I/O线程,并在启动时进行hibernate (classic)交互。

一个简单的问题:这行得通吗?我将在未来几天自己尝试这个,但也许有一些基本的东西我忽略了,或者也许有一个更好的策略/设计,例如使用生命周期方法。

    void onStart(@Observes StartupEvent ev) {               
        LOGGER.info("The application is starting...");
    } 

共有1个答案

颛孙森
2023-03-14

是的,这个可以。这个想法是,您应该在工作线程上使用普通Hibernate,而在Vert.x事件循环线程上使用Hibernate Reactive

 类似资料:
  • 我正在尝试将Activiti Angular应用程序和Activiti rest api Spring boot starter结合到一个Spring boot项目中。 这就是pom。项目的xml 我把index.html放在 /resources/templates文件夹下,css和js文件放在 /resources/static文件夹下。 然后我设置了一个简单的Spring控制器,在请求 /h

  • 我有一个Spring Boot应用程序,它有一些外部依赖(例如,项目之外的文件,需要存在,以便应用程序正确启动)。 和一系列其他例外。有没有一种方法可以恰当地做到这一点?

  • 我有一个导入到eclipse 3.4中的maven webapp项目,带有logback(1.0.9)日志记录。有: 主/资源/回溯.xml src/test/resources/logback-test.xml 当我在Tomcat中启动webapp时,由于Logback找到配置文件的顺序,logback-test.xml总是被加载。相反,我希望为应用程序启动加载logback.xml,并将log

  • 请让我知道如何使用spring boot和ehcache实现这一点。

  • 我有一份Java申请。 应用程序有一个决定应用程序是否在启动时启动的设置。 目前,我通过在StartUp items文件夹中放置/删除快捷方式实现了这一点。 然而,我想知道是否有更好的方法来处理这种行为。 编辑 是的,是视窗。抱歉之前没有清除。 应用程序有一个UI,用户可以在其中触发操作,并且应用程序在运行时定期在后台运行一些任务。 @Peter,如何使用应用程序中的代码更改注册表?这种方法是否与

  • 我有以下映射器(mapstruct版本1.3.1.Final)。 当我尝试运行spring应用程序时,遇到了一个问题,即找不到与Mapper关联的bean。 我试着用装修工解决这个问题。通过为接口添加注释并创建以下类。 然后我收到。 在这种情况下可能有什么问题?