spring懒加载

简介

 Spring默认会在容器初始化的过程中,解析xml或注解,创建配置为单例的bean并保存到一个map中,这样的机制在bean比较少时问题不大,但一旦bean非常多时,spring需要在启动的过程中花费大量的时间来创建bean ,花费大量的空间存储bean,但这些bean可能很久都用不上,这种在启动时在时间和空间上的浪费显得非常的不值得。

       所以Spring提供了懒加载机制。所谓的懒加载机制就是可以规定指定的bean不在启动时立即创建,而是在后续第一次用到时才创建,从而减轻在启动过程中对时间和内存的消耗。

       懒加载机制只对单例bean有作用,对于多例bean设置懒加载没有意义,因为多例bean本来就是在使用时才创建的。

懒加载

在User类中增加一个初始化方法

public void init(){
        System.out.println("初始化");
    }

在配置文件中,声明这个bean的初始化方法,当该userbean被加载的时候就会执行初始化方法,意味着该bean被加载了

       

在测试类中创建容器,并执行

ApplicationContext applicationContext =
                new ClassPathXmlApplicationContext("application2.xml");

会发现即使什么也没做的情况下还是会加载bean
在这里插入图片描述

此时向名为User的bean增加一个 lazy-init 如下,就会启动懒加载

 

再次执行测试类

spring懒加载_第1张图片
会发现现在什么也打印,意味着Spring中的bean没有被加载,这时候试着获取spring容器中的bean,再次执行,会发现bean被加载了。

        ApplicationContext applicationContext =
                new ClassPathXmlApplicationContext("application2.xml");
         User user = (User)applicationContext.getBean("user");

spring懒加载_第2张图片

如果一个bean开启了懒加载,那么只有从容器中获取的时候才会被加载,如果一个bean没有开启懒加载那么只要容器被初始化 bean就会被加载。

你可能感兴趣的:(java,开发语言)