`

使用@Async注解是hibernate中抛出LazyInitializationExceptions

阅读更多

项目中有一个需求:批量产生一批数据,并存放在数据库中,并产生文件供下载。根据需求很容易想到@Async注解,但当注解加到service层的方法上时,却会抛出org.hibernate.LazyInitializationException。

项目使用spring3.1 和hibernate3.3.2GA,再经过各种谷歌之后终于找到原因,原因参考这里,具体是因为hibernate中session的范围问题。具体解决方法如下:

 

@Service
public class AsyncServiceImpl implements AsyncServiceInt{

@Autowired private SlowProcess slowProcess;

@Override
@Async
public void startSlowProcess(Integer scenarioId) {
    slowProcess.execute(param);
}

..

public class SlowProcess {

   @Transactional
   public double[] execute() { .. }

}

 此解决方法来自:http://stackoverflow.com/questions/17278385/spring-async-generates-lazyinitializationexceptions

 

分享到:
评论

相关推荐

    关于Spring中@Async注解使用

    Spring 中 @Async 注解的使用 @Async 注解是 Spring 框架提供的一种异步执行方法的实现方式,从 Spring 3.0 版本开始提供。使用 @Async 注解可以将方法标识为异步方法,通过 SimpleAsyncTaskExecutor 执行,但不...

    Spring中@Async注解执行异步任务的方法

    现在,我们可以在Service类中使用@Async注解来异步化方法。例如: ```java @Service public class BusinessService { private static final Logger log = LoggerFactory.getLogger(BusinessService.class); @...

    关于Spring注解@Async引发其他注解失效的解决

    在文章中,作者介绍了一个典型的场景:在一个 Bean 中注入自己,并使用 @Async 和 @Transaction 注解。但是,当使用 @Autowire 注入自己时,会报循环依赖错误;而使用 BeanFactoryAware 注入自己时,会导致 @...

    Spring @async方法如何添加注解实现异步调用

    当我们在 Spring 中使用 @Async 注解时,Spring 会扫描方法上是否包含 @Async 注解,如果包含的,Spring 会为该 Bean 动态生成一个代理类,代理类是继承我们所写的 Bean 的,然后把代理类注入进来,那此时,在执行此...

    Spring中@Async注解实现异步调详解

    要使用@Async注解,需要在配置类中通过@EnableAsync开启对异步任务的支持,并通过在实际执行的Bean的方法中使用@Async注解来声明其是一个异步任务。例如,在下面的代码中,我们使用了@Configuration和@EnableAsync...

    Spring中异步注解@Async的使用、原理及使用时可能导致的问题及解决方法

    Spring 中异步注解 @Async 的使用、原理及使用时可能导致的问题及解决方法 @Async 注解是一种非常有用的spring 注解,它可以让被标注的方法异步执行,从而提高应用程序的性能和响应速度。但是,@Async 注解的使用也...

    springboot中@Async异步调用注解的使用

    在Spring Boot框架中,@Async注解是实现异步任务处理的关键工具,它允许开发者将耗时的操作从主线程中分离出来,以提高应用程序的响应速度。本文将深入探讨@Async的工作原理、配置方法以及使用场景,帮助你更好地...

    谈谈SpringBoot中@Async注解使用的一些误区

    在Spring Boot应用中,`@Async`注解是Spring框架提供的异步处理功能,它使得开发者可以方便地实现非阻塞式编程,提高应用程序的执行效率。然而,很多初学者在使用`@Async`时可能会遇到一些误区,导致程序运行结果不...

    JAVA 中Spring的@Async用法总结

    JAVA 中Spring的@Async用法总结 在 Java 应用中,绝大多数情况下都是通过同步的方式来实现交互处理的...以上就是 Spring 中 @Async 的用法总结,通过使用 @Async 可以轻松地实现异步调用,提高系统的响应速度和性能。

    Spring boot注解@Async线程池实例详解

    Spring Boot 提供了 @Async 注解,可以将方法异步化,使得方法的调用者不需要等待方法的执行结果,直接返回,而方法的实际执行将提交给 Spring 的 TaskExecutor 中,由指定的线程池中的线程执行。 2. TaskExecutor...

    Spring Boot利用@Async如何实现异步调用:自定义线程池

    在Spring Boot中,可以使用@Async注解来实现异步调用。 使用@Async实现异步调用 在Spring Boot中,使用@Async注解可以将方法异步执行。@Async注解可以应用于方法上,使得该方法可以异步执行。例如: ```java @...

    springboot中@Async默认线程池导致OOM问题

    在 SpringBoot 中使用 @Async 注解来实现异步操作是一种非常常见的做法,但是如果不小心,可能会导致 OOM(Out of Memory)问题。本文将详细介绍 SpringBoot 中 @Async 默认线程池导致 OOM 问题的原因、解决方法以及...

    【java框架】SpringBoot(10) -- SpringBoot巧用 @Async提升API接口并发能力 .pdf

    在高并发的Web应用中,提高接口的并发处理能力是至关重要的,而SpringBoot框架提供了一种简单有效的方法——使用`@Async`注解来实现异步调用,从而优化性能。本文将深入探讨什么是异步调用,以及如何在SpringBoot中...

    深入理解Spring注解@Async解决异步调用问题

    本文将详细介绍Spring框架中的@Async注解,并深入理解其在解决异步调用问题中的应用。通过示例代码和详细的解释,帮助读者更好地理解@Async的使用和原理。 一、异步调用和同步调用 异步调用和同步调用是两种不同的...

    Spring里的Async注解实现异步操作的方法步骤

    要使用 @Async 注解,需要在配置文件中开启 @EnableAsync 注解,然后建立新的类型,建立异步方法,为方法添加 @Async 注解。在业务代码中,使用 @Autowired 注入你的类型,使用它即可。 Async 几种方式 Async 注解...

    Spring @Async 的使用与实现的示例代码

    Spring @Async 是 Spring 框架中一个重要的异步处理机制,通过使用 @Async 注解可以将方法设置为异步执行,从而提高系统的响应速度和吞吐量。本文将详细介绍 Spring @Async 的使用和实现机制,并提供示例代码以供...

    Spring Boot多线程demo

    Spring Boot 中使用多线程的方式有很多种,最简单的方式就是使用 @Async 注解来实现。下面我们将详细介绍如何使用 @Async 注解来实现多线程编程。 多线程前言 在 Java 中,多线程编程是非常重要的一种技术,通过...

    Spring中@Async用法详解及简单实例

    - **异常处理**:默认情况下,@Async方法中的异常会被包装成AsyncExecutionException抛出,可以通过全局异常处理器捕获并处理。 - **通知机制**:Spring提供了异步方法完成后的通知回调,如AsyncConfigurer接口的...

    浅谈Spring @Async异步线程池用法总结

    浅谈Spring @Async异步线程池用法总结 本文主要介绍了Spring @Async异步线程池的用法总结,包括异步线程池的接口类、@Async定义异步任务、Spring开启异步配置等内容。 1. 异步线程池的接口类 Spring提供了多种...

Global site tag (gtag.js) - Google Analytics