Spring单例类创建多个实例
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring单例类创建多个实例相关的知识,希望对你有一定的参考价值。
我正在尝试将类设为单例,并使其在更改以下进行
Beans.xml has this:
<bean id="LdapUti" class="com.amazon.bpmsawsproxy.util.LdapUtil" scope="singleton" />
LdapUtil class:
public class LdapUtil {
private static Log logger = LogFactory.getLog(LdapUtil.class);
public DirContext GetLdapDirContext() throws NamingException {
Hashtable<String, Object> env = new Hashtable<String, Object>(11);
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "*********");
env.put(Context.SECURITY_CREDENTIALS, "******");
env.put(Context.SECURITY_PROTOCOL, "ssl");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
DirContext ctx = new InitialLdapContext(env, null);
return ctx;}}
这是编写用于测试单例类的单元测试用例
@Test
public void testSingleton(){
LdapUtil ctx1 = new LdapUtil();
LdapUtil ctx2 = new LdapUtil();
assertEquals(System.identityHashCode(ctx1), System.identityHashCode(ctx2));
}
从单元测试用例:我得到了两个不同的哈希码,我相信它会创建多个实例。如果我错过了活动,请让我知道
答案
请注意,该类不是单例的,在sping config xml中仅将该类的范围设置为单例。
您创建了不受Spring管理的新实例,因此将获得不同的哈希码。
以上是关于Spring单例类创建多个实例的主要内容,如果未能解决你的问题,请参考以下文章