使 @PostConstruct 只对 StateLess EJB 的第一个实例执行

Make @PostConstruct do only for first instance of StateLess EJB

我有一个 class 过时的 EJB(不是单例!)。当创建此 class 的第一个 bean 时,我只需要调用一次方法(加载配置)。 @PostConstruct 解决了我一半的问题,但它是为每个 bean 执行的。解决此类问题最优雅的方法是什么?

您可以使用@Startup 注释强制容器在应用程序初始化期间实例化单例实例。

@Startup
public class StartupBean {

@PostConstruct
private void startup() { ... }

@PreDestroy
private void shutdown() { ... }
...
}

我看到两个选项:

  • 考虑使用封装文件配置数据的单例对象,并在 EJB 中添加对它的引用。

  • 考虑一个创造性的设计模式。我认为原型模式应该适合您的需要,但您可能会找到其他选择。检查此细节:http://en.wikipedia.org/wiki/Software_design_pattern.