SpringBoot设置多例
1、准备数据
- 测试接口
package com.cc.jschdemo.springmultiton;
/**
* <p>spring多例测试</p>
*
* @author --
* @since 2023/11/23
*/
public interface ISpringMultiton {
}
- 测试接口实现(注入spring)
package com.cc.jschdemo.springmultiton;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
/**
* <p></p>
*
* @author --
* @since 2023/11/23
*/
@Component
public class SpringMultitonImpl implements ISpringMultiton{
}
2、默认单例测试
@Resource
private ISpringMultiton springMultiton;
//默认是单例的
@Test
public void test04()throws Exception{
int i = springMultiton.hashCode();
System.out.println("第一次使用的地址:" + i);
int i1 = springMultiton.hashCode();
System.out.println("第二次使用的地址:" + i1);
}
-
hashCode结果:
-
内存结果:
3、☆☆实现多例☆☆
- spring注入默认单例,要实现多例,必须配置
3.1、测试接口实现(注入spring)加上:@Scope("prototype")
package com.cc.jschdemo.springmultiton;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
/**
* <p></p>
*
* @author --
* @since 2023/11/23
*/
@Component
@Scope("prototype")
public class SpringMultitonImpl implements ISpringMultiton{
}
3.2、注入时使用:ObjectProvider
@Resource
private ObjectProvider<ISpringMultiton> objectProvider;
@Test
public void test05()throws Exception{
//这里的objectProvider.getObject()获取出来的,就相当于spring注入的ISpringMultiton
ISpringMultiton springMultiton1 = objectProvider.getObject();
int i = springMultiton1.hashCode();
System.out.println("第一次使用的地址:" + i);
ISpringMultiton springMultiton2 = objectProvider.getObject();
int i1 = springMultiton2.hashCode();
System.out.println("第二次使用的地址:" + i1);
}
-
hashCode结果:
-
内存结果: