@Lazy注解使用说明

@lazy注解使用说明

 * 

If this annotation is not present on a {@code @Component} or {@code @Bean} definition, * eager initialization will occur. If present and set to {@code true}, the {@code @Bean} or * {@code @Component} will not be initialized until referenced by another bean or explicitly * retrieved from the enclosing {@link org.springframework.beans.factory.BeanFactory * BeanFactory}. If present and set to {@code false}, the bean will be instantiated on * startup by bean factories that perform eager initialization of singletons.

以上是@Lazy注解的官方注释,在spring中bean的加载默认就是 eager的。可以通过@Lazy(value=true) 来指定某个bean 懒加载。

这里的懒加载指在初始化bean容器时不会加载这个bean,在使用这个bean时才会去加载,下面看代码。

    @Override
    @Bean
    public void eat() {
     
        System.out.println("eat.........");
    }

这个是没有加@Lazy注解的,看一哈日志
@Lazy注解使用说明_第1张图片
我们看到,spring在初始化时就将这个bean加载执行了,再看加了@lazy注解的

    @Override
    @Bean
    @Lazy
    public void eat() {
     
        System.out.println("eat.........");
    }

日志
在这里插入图片描述
可以看到,spring初始化时是没有执行这个eat方法的。

你可能感兴趣的:(Spring,java)