我正在将单例转换为Spring bean,因此,如果单例无法初始化,则整个Web应用程序的spring上下文将无法正确加载。
使Spring上下文无法正确加载的优点是,人们会在部署过程中注意到并修复配置。与使用“非春季bean”单例相反:当初始化期间引发异常时,没有人注意到..直到实际用户抱怨缺少功能。
我的更改正在按预期方式工作。.但是我不确定自己是否做对了。
有什么想法吗?
代码如下:
public class MySingleton {
private static MySingleton INSTANCE = null;
private MySingleton(){}
public static MySingleton getInstance(){
if(INSTANCE == null){
synchronized(MySingleton.class){
if(INSTANCE == null){
try{
doWork()
}catch(Exception e){
throw new IllegalStateException("xyz", e);
}
INSTANCE = new MySingleton();
}
}
}
return INSTANCE;
}
private static void doWork() {
// do some work
}
}
在spring config xml中,bean将定义为:
<bean id="MySingletonBean"
class="com.MySingleton"
factory-method="getInstance" lazy-init="false" singleton="true">
</bean>
注意:
大多数操作与本文中讨论的策略类似:http : //springtips.blogspot.com/2007/06/configuration-
hell-remedy-with.html
编辑1:
使用此单例的类本身不是spring bean。它们只是非spring
pojos,我无法转换为spring。他们必须依靠getInstance()方法来获取Singleton。
编辑2 :( 将我在下面的评论复制到此描述部分中),我试图针对两件事:
编辑3(决赛):
我决定将此类作为单身..,而不是使其成为弹跳豆。如果初始化失败,它将在日志文件中记录一些内容。.希望进行部署的人员注意....我放弃了前面提到的方法,因为我认为它将在将来造成维护方面的噩梦,因此我不得不选择-
单例-或-四季豆。我选择单身人士。
您 必须 声明该INSTANCE
字段volatile
为双重检查锁定才能正常工作。
参见有效Java,条款71。
问题内容: W3文档有一个以开头的嵌套列表示例,但是他们从未使用不推荐使用的示例对其进行更正,也从未确切说明该示例出了什么问题。 那么,哪种方法是编写HTML列表的正确方法呢? 选项1 :嵌套是父级的子级 选项2 :嵌套是其所属的子级 问题答案: 选项2 是正确的。 嵌套列表应 位于嵌套列表 的 元素 内 。 链接到列表上的W3C Wiki(摘自以下评论):HTML Lists Wiki。 链接到
问题内容: 因此,我正在考虑建立一个业余项目,这只是为了完成我的编程/设计。 它基本上是一个多线程的网络蜘蛛,更新了相同的数据结构object-> int。 因此,为此使用数据库绝对是矫kill过正,而我唯一想到的就是用于包含我的数据结构的线程安全单例。http://web.archive.org/web/20121106190537/http://www.ibm.com/developerwor
问题内容: 我是Hibernate的新手,并且正在编写一个简单的方法来返回与特定过滤器匹配的对象列表。似乎是自然的回报类型。 不管我做什么,除非聘用了丑陋的人,否则似乎都无法使编译器满意。 我想摆脱它。但是如果我这样做,我会得到警告 (我可以忽略它,但是我不想一开始就得到它),如果我删除泛型以符合返回类型,则会收到警告 我注意到 确实 声明了;但这是完全不同的类型- 返回a 作为原始类型。我发现最
实际上,我已经使用ffmpeg本机aac编码器将一个音频文件从ac3编码到aac,但问题是该文件没有正确播放,更具体地说,我在不同的媒体播放器中播放了该文件,但大多数都是从19秒开始的,在vlc中,甚至直到我寻求超过19秒的持续时间才开始播放。 我使用的命令是:-ffmpeg-i source。mkv-Map0:a:0-c:aac音频。mp4。
问题内容: 有没有一种干净的方法可以阻止风暴,而又不使用“ kill XXX”杀死风暴,其中XXX是PID? 我运行“ storm kill topology- name”杀死拓扑,但是在那之后,有没有一种干净的方法来关闭worker,nimbus,supervisor和ui? 我没有从文档中找到与此命令相对应的任何命令:https : //github.com/nathanmarz/storm/
我试图做一个简单的绘图(对于这个例子,做一个y=x^2的绘图就足够了),我想根据它们的大小设置点的颜色。 下面是我的简单示例,我说: 使用,它生成一个带有彩色点的绘图,但colorbar与彩色值不一致。(这是我的第一篇文章,无法发布图片)。使用命令给出正确的范围,但颜色仍处于关闭状态。 所以我有两个问题:(1)如何调整颜色以适应给定范围的色条?在我的真实数据中,在某些情况下,我看到的值在-50到5