看起来我有一个很大的问题让我对如何解决它感到很困惑。
我正在使用Spring的4.0.3.RELEASE并创建了一个MVC rest应用程序。大多数配置是通过Java配置完成的,类似于WebMVCConfig,它扩展了WebMvcConfigurerAdapter。
我有一个spring bean,它加载了一个文本挖掘系统,它有一些重型列表。在一个独立的应用程序中,我只需加载一次,我需要处理一些文本,我只需要调用进程句方法。它的构造函数一次加载所有列表,之后只是调用该函数的问题。过程函数有时需要大约10秒,但有时需要几毫秒才能运行,这取决于数据。
现在,将它放在Spring MVC应用程序上很有意思。如果我将范围设置为该bean的会话范围:@Scope(value = WebApplicationContext.SCOPE_SESSION,proxyMode = ScopedProxyMode.TARGET_CLASS)它工作得很好,当然需要一些时间来加载我的休息应用程序。
但是,最终它会耗尽内存,因为会话永远不会被杀死。
如果我按要求这样做,那将是同样的问题。
如果我这样做,那么默认应用程序范围比我对该bean的并发用法有问题。一个用户运行良好,另一个用户崩溃。
我不知道该怎么做。虽然会话范围似乎是正确的答案,因为每次调用都会保留状态。不仅Bean很重,但有时可能需要10秒才能进行分析。
我有一个Java Configuration类,我通过@Inject批注将该bean注入我的Service Implementation类。想知道正确的是@Autowire。
基本上我的数据挖掘Bean通过@Inject注入到我的服务bean中。我已经将2个bean分配为会话bean。
不知道我是否应该将数据挖掘Bean分配为会话,将服务bean分配为应用程序以及用于连接Datamining bean的方法。我是否使用@Autowire注释或其他东西来避免我遇到的问题。
另外,ScopedProxyMode怎么样?在这种情况下应该使用哪一个?
这种情况同样是一种重豆,处理时间很慢(10秒)。
谢谢,