zoukankan      html  css  js  c++  java
  • 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时,每次获取对象的时候都会创建一个新的对象(构造方法会被重新调用).

  • 相关阅读:
    XML解析技术研究(一)
    Qt解析XML文件(QXmlStreamReader)
    Qt XML读取写入操作
    QT QXmlStreamWriter用法小结
    QtXML 举例
    libpcap使用
    PCAP研究
    粗谈pcap_next_ex()
    C#扇形的绘制与Hittest交互、图种制作
    ORA-01747: user.table.column, table.column 或列说明无效
  • 原文地址:https://www.cnblogs.com/trekxu/p/9094866.html
Copyright © 2011-2022 走看看