单例模式的坑
Posted 平凡不平凡凡凡有约
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单例模式的坑相关的知识,希望对你有一定的参考价值。
之前没用到单例模式,前一阵子项目需要,当时有这样的一个场景.我们的消息服务,需要保证消息下发的可靠性,有一个线程重发机制,这时线程需要动态的获取消息服务中的消息队列的消息信息,从而保证消息的可靠性下发.
这时候我就尝试使用单例模式,在这个系统中,有好几个地方(类中)都用到了这个单例类,并且有一个专门的线程检测那个单例类中的map值.这时候这个单例类确实是满足我们需要的场景.
这时候问题来了,如果我们需要在这个单例类中做其他的操作,之后我们增加了一个需求,我们需要检测用户的状态,从而做到消息服务集成第三方的消息发送通道,这样保证用户在离线状态下也可以受到消息.这时我需要调用其他的service服务.这时候自动装载就是不能正常运行.乃至在使用@Value获取文件中的属性值也不能.
之后经过一番的探索找到了,问题的解决方案,使用@postConstruct这个注解,配合花里胡哨的操作就解决了不能自动装载,以及获取属性值的问题.
查了资料,@postConstruct注解修饰的方法,类似也创建servlet的init方法.具体的关于postConstruct的信息可以自行查找资料,这里仅仅只是提供一种解决问题的方案.
具体使用的可以参考下图
以上是关于单例模式的坑的主要内容,如果未能解决你的问题,请参考以下文章