上篇文章主要介绍了@ComponentScan的注解:
Spring源码从入门到精通---@ComponentScan(二)
这篇文章主要介绍单例模式,多例模式,懒加载,先上目录结构,这篇文章先创建了beanConfig2文件。
1、多例模式,单例模式
多例模式:@Scope的value指定为prototype,IOC容器初始化完毕之后,获取bean实例的时候加载bean,两次获取的对象实例不是同一个地址值,比较为false。
单例模式: @Scope的value指定为singleton,IOC容器初始化之前,在类加载的时候,直接扫描bean实例放入IOC容器,两次获取的对象是同一个地址值,比较为true。
/** * @Scope */ @org.junit.Test public void test2() { AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext( BeanConfig2.class); System.out.println("springIOC容器加载完毕!"); Person person1 = (Person)annotationConfigApplicationContext.getBean("person2"); Person person2 = (Person)annotationConfigApplicationContext.getBean("person2"); System.out.println(person1 == person2); }
2、懒加载
单例模式的情况下才存在,默认是饿汉模式,在类初始化的时候,直接把对象放入IOC容器,@lazy注解使用后,第一次获取对象的时候,才加载当前类。
之前文章有过详细解答spring单例模式,多例模式,懒汉加载,饿汉加载,这里就不细说,有需要的可以去看看。