我有一个Seam组件,其注释如下:

@AutoCreate
@Name("asyncServiceManager")
@Scope(ScopeType.APPLICATION)
public class AsyncServiceManager {


使用它的类配置如下:

@In("#{asyncServiceManager}")
private AsyncServiceManager asyncServiceManager;


运行代码时,我看到每次使用AsyncServiceManager实例化该类。正如我用范围APPLICATION注释类时,情况并非如此。我需要这个班成为单身人士。

最佳答案

此外,您可以简单地进行配置。您不需要这个:

@In("#{asyncServiceManager}")


相反,由于您的变量名称与组件名称相同,因此已足够

@In
private AsyncServiceManager asyncServiceManager;


根据组件的使用频率(这是一种优化),可以将其设置为事件范围的组件,在观察到事件时自动创建它,然后在此之后销毁它。

沃尔特

09-30 21:03