Java 如何管理范围和内存负载沉重的bean?

Java 如何管理范围和内存负载沉重的bean?,java,spring,spring-mvc,Java,Spring,Spring Mvc,看起来我有一个大问题,这让我很困惑如何解决它 我正在使用Spring的4.0.3.0版本,并创建了一个MVC rest应用程序。大多数配置都是通过Java配置完成的,正如WebMVCConfig类编写的那样,它扩展了WebMVCConfigureAdapter 我有一个Springbean,它加载了一个文本挖掘系统,其中有一些很重的列表。在一个独立的应用程序中,我只需加载它一次,处理一些文本所需的所有内容,我只需从中调用process语句方法。该函数的构造函数加载所有列表一次,之后只需调用该函数

看起来我有一个大问题,这让我很困惑如何解决它

我正在使用Spring的4.0.3.0版本,并创建了一个MVC rest应用程序。大多数配置都是通过Java配置完成的,正如WebMVCConfig类编写的那样,它扩展了WebMVCConfigureAdapter

我有一个Springbean,它加载了一个文本挖掘系统,其中有一些很重的列表。在一个独立的应用程序中,我只需加载它一次,处理一些文本所需的所有内容,我只需从中调用process语句方法。该函数的构造函数加载所有列表一次,之后只需调用该函数即可。process函数有时需要10秒,但有时需要几毫秒才能运行,这一切都取决于数据

现在,把它放在SpringMVC应用程序上是很有趣的。如果我将该bean的作用域设置为会话作用域:@Scopevalue=WebApplicationContext.scope\u session,proxyMode=ScopedProxyMode.TARGET\u类,它工作得非常好,当然在我的rest应用程序上加载需要一些时间

然而,最终它将耗尽内存,因为会话永远不会立即终止

如果我按要求做这件事,也会是同样的问题

如果我在默认的应用程序范围内这样做,那么我就会对该bean的并发使用产生问题。一个用户运行良好,另一个用户崩溃

我不知道该怎么办。尽管会话范围似乎是正确的答案,因为状态在每次调用时都会保留。不仅豆子很重,有时还需要10秒钟来进行分析

我有一个Java配置类,在这个类中,我通过@inject注释将该bean注入到我的服务实现类中。不知道正确的答案是否是@Autowire

基本上,我有我的数据挖掘Bean,它通过@Inject注入到我的服务Bean中。我已将这2个bean指定为会话bean

不知是否应该将数据挖掘Bean分配为会话,将服务Bean分配为应用程序,以及使用哪种方法连接该数据挖掘Bean。我是否使用@Autowire注释或其他方法来避免我遇到的问题

还有,ScopedProxy模式呢?这个案子应该用哪一个

同样,情况是一个沉重的Bean,它的处理时间可能会慢10秒

谢谢