2017-04-19 173 views
1

以下是我的春天控制器之一的代码。在这个我需要存储一些数据在多线程postgres数据库,所以我没有等到它将数据保存到数据库,我可以发送响应回到被调用的API。我可以如何实现这一目标?多线程弹簧启动控制器

//billingLogService.saveBillingLogDetails(Object); 
if (!Util.isNull(personId) && !Util.isNull(personConnectionData)) { 
    return new Callable<Map<Long, PersonConnectionTo>>() { 
     @Override 
     public Map<Long, PersonConnectionTo> call() throws Exception { 
      Map<Long, PersonConnectionTo> connectionTextMap = 
       profileService.getconnectionTextForFocusCompany(focusCompanyId, personId, personConnectionData); 
      return connectionTextMap; 
     } 
    }; 
} 
+0

你可以看看使用Spring的'@ Async'注解。 – CollinD

回答

0

其中一种方法是将整个逻辑(您想在单独的线程中运行)放到某个服务类的方法中。
然后
1.用@Service或类似的注释类。
2. @Async
3.使用@EnableAsync
标注方法,这应该足够了

+0

获取异常警告9071 --- [cTaskExecutor-2] ohengine.jdbc.spi.SqlExceptionHelper:SQL错误:0,SQLState:42883 错误9071 --- [cTaskExecutor-2] ohengine.jdbc.spi.SqlExceptionHelper错误:运算符不存在:bigint = bytea 提示:没有运算符匹配给定的名称和参数类型。您可能需要添加显式类型转换。 Position:123 ERROR 9071 --- [cTaskExecutor-2] .a.i.SimpleAsyncUncaughtExceptionHandler:调用异步方法'public void com.equilar.bsp.service.impl.BillingLogServiceImpl.saveConnectionText(java.lang.Long)'时发生意外的错误。 – vk1

+0

这与你的代码有些相关,ant完全与运行在单独的线程中有关 – pvpkiran