美文网首页
Spring注解:@Lazy

Spring注解:@Lazy

作者: 因你而在_caiyq | 来源:发表于2020-04-07 22:43 被阅读0次

    原创文章,转载请注明原文章地址,谢谢!

    @Lazy

    @Lazy主要针对于单实例Bean而言,是懒加载的意思。我们知道在单实例Bean中,IoC容器启动后,实例就已经被创建,等到后面需要使用Bean的时候,直接从容器中获取就可以了。

    @Configuration
    public class MainConfig {
    
        @Bean
        public Person person() {
            System.out.println("创建对象...");
            return new Person();
        }
    }
    
    @Test
    public void testScope() {
        ApplicationContext applicationContext =
                new AnnotationConfigApplicationContext(MainConfig.class);
        System.out.println("IoC容器启动完成...");
        Object person = applicationContext.getBean("person");
        Object person2 = applicationContext.getBean("person");
        System.out.println(person == person2);
    }
    

    测试结果为

    创建对象...
    IoC容器启动完成...
    true
    

    加上@Lazy注解

    @Configuration
    public class MainConfig {
    
        @Bean
        @Lazy
        public Person person() {
            System.out.println("创建对象...");
            return new Person();
        }
    }
    

    测试结果为

    IoC容器启动完成...
    22:32:24.924 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'person'
    创建对象...
    true
    

    分析:IoC容器启动的时候,并不会去初始化实例,而在第一次获取的时候,创建Bean并放入到容器中,等到第二次再获取的时候,因为是单例,所以不再创建,而是直接从容器中获取,取出的Bean也是同一个。

    博客内容仅供自已学习以及学习过程的记录,如有侵权,请联系我删除,谢谢!

    相关文章

      网友评论

          本文标题:Spring注解:@Lazy

          本文链接:https://www.haomeiwen.com/subject/jifaphtx.html