SpringBoot注入时设置《多例》

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结果:
    image

  • 内存结果:
    image

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结果:
    image

  • 内存结果:
    image

posted on 2023-11-23 09:58  C_C_菜园  阅读(379)  评论(0编辑  收藏  举报

导航