• 018 使用@Scope完成bean的作用域的声明


    一 .概述

    在spring之中常用的Bean的生命周期常见的有单例模型和多例模型.

    我们可以使用@Scope完成声明.


     二 .@Scope

    [1]创建组件

    public class Car {
    
    }
    public class Bike {
    
    }

    [2]创建配置类

    @Configuration
    public class ScopeConfig {
        
        @Bean
        public Car car() {
            return new Car();
        }
        
        @Bean
        @Scope("prototype")
        public Bike bike() {
            return new Bike();
        }
    }

    [3] 测试类

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(classes = ScopeConfig.class)
    public class ScopeTest {
        @Autowired
        private ApplicationContext context;
        
        @Test
        public void test1() {
            System.out.println(context.getBean("car") == context.getBean("car"));
            System.out.println(context.getBean("bike") == context.getBean("bike"));
        }

    查看运行结果:

    true
    false

    我们通过结果就知道Bean的Scope了.


    三 . scope的默认情况

      在IOC容器之中(ApplicationContext)之中,默认会将所有的单实例Bean在容器初始化完成之后,直接创建出来并且缓存到容器之中.

      这样做的目的就是加速初次获取Bean的速度.

      默认情况下,Scope为prototype时,每次获取对象的时候都会创建一个新的对象(构造方法会被重新调用).

  • 相关阅读:
    单片机编程时易错总结 20181015 项目:3060-A
    UCOS 多任务系统中需要注意的地方 一个任务至少要有一些执行内容
    LDO-AMS1117
    DCDC与LDO
    电容器的ESR
    Class AB与Class D功放
    驻极体麦克风
    音频处理的技术指标
    I2S接口工作原理
    有关功放输入端的探究
  • 原文地址:https://www.cnblogs.com/trekxu/p/9094866.html
Copyright © 2020-2023  润新知