【发布时间】:2011-04-12 00:52:01
【问题描述】:
- 我正在实施一个使用第三方提供商服务的服务类。
- 用户将与Service类进行交互以获取服务提供者的服务。
我的要求:
我只想加载一次服务类(或者它会在内存中持续很长时间,比如 2 小时)。
我的问题:
如何检查该服务类是否只加载一次?
如果每次发出请求时都会加载它,那么有什么办法可以让它们持久存在内存中?
这是我的服务类的代码
谢谢
【问题讨论】:
标签: java
我的要求:
我只想加载一次服务类(或者它会在内存中持续很长时间,比如 2 小时)。
我的问题:
如何检查该服务类是否只加载一次?
如果每次发出请求时都会加载它,那么有什么办法可以让它们持久存在内存中?
这是我的服务类的代码
谢谢
【问题讨论】:
标签: java
您可以实现singleton pattern。一种选择是使用枚举:
public enum Service {
INSTANCE;
private ThirdPartyService service = new ThirdPartyService();
public ThirdPartyService getService() {
return service;
}
}
但不要过度使用该模式,因为它会使您的代码难以进行单元测试。
【讨论】:
去 Spring。
创建一个 bean 条目并将其保持为单例 [默认情况下]
初始化上下文时,它将创建该类的一个对象,然后它不会触及该类,您的目的将得到解决。
【讨论】:
您还可以查看OSGi,它有一个服务模型,会为您处理所有类加载。您也可以combine it with Spring 获得两全其美的好处。
【讨论】: