0
点赞
收藏
分享

微信扫一扫

Spring注解:@Lazy

云上笔记 2021-10-15 阅读 74
技术分享
@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也是同一个。

举报

相关推荐

0 条评论