• 懒加载:对象使用的时候才去创建。节省资源,但是不利于提前发现错误;
  • 提前加载:容器启动时立马创建。消耗资源,但有利于提前发现错误
  • Spring 默认设置是非懒加载

1,由于在controller中会注入service层的类,由于,controller层面上的spring-mvc不是懒加载,即当在controller中注入service时,就会初始化此service类。因此即调用到谁初始化谁

2,如果一个bean被设置为延迟初始化,而另一个非延迟初始化的singleton bean依赖于它,那么当ApplicationContext提前实例化singleton bean时,它必须也确保所有上述singleton 依赖bean也被预先初始化,当然也包括设置为延迟实例化的bean,即被非懒加载的bean依赖时也会被初始化。

3,ApplicationContext实现的默认行为就是在启动时将所有singleton bean提前进行实例化。提前实例化意味着作为初始化过程的一部分,ApplicationContext实例会创建并配置所有的singleton bean。通常情况下这是件好事,因为这样在配置中的任何错误就会即刻被发现(否则的话可能要花几个小时甚至几天)。

@Lazy @Scope(“prototype”) 实现懒加载

** Config.class **

package com.rumenz;import org.springframework.beans.factory.config.ObjectFactoryCreatingFactoryBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope;@Configuration
public class Config {@Bean("rumenza")public RumenzA rumenza(){return new RumenzA();}@Bean("rumenzb")//@Lazy@Scope("prototype")public RumenzB rumenzb(){return new RumenzB();}
}

** RumenzA.class **

package com.rumenz;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;import javax.annotation.PostConstruct;public class RumenzA {public  RumenzA() {System.out.println("RumenzA 无参构造方法");}}

** RumenzB.class **

package com.rumenz;public class RumenzB {public RumenzB() {System.out.println("RumenzB 无参构造方法");}}

** DemoApplication.class **

package com.rumenz;import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class DemoApplication {public static void main(String[] args) {AnnotationConfigApplicationContext ac=new AnnotationConfigApplicationContext();ac.register(Config.class);ac.refresh();ac.getBean(RumenzB.class);}
}

** 输出 **

RumenzA 无参构造方法
RumenzB 无参构造方法 //只有调用的时候RumenzB才实例化

Spring Bean懒加载与非懒加载相关推荐

  1. 懒加载和预加载的区别_类的动态创建(ro,rw)amp; 懒加载类和非懒加载类底层加载的区别 amp; 类和分类的搭配分析...

    黑客技术点击右侧关注,了解黑客的世界! Java开发进阶点击右侧关注,掌握进阶之路! Python开发点击右侧关注,探讨技术话题!作者丨OSMin链接:https://juejin.im/post/5 ...

  2. Spring Bean 的注入方式

    DI 注入 一. 传统的注入方式 通过bean标签方式注入 通过包扫描的方式注入 二. 注解方式配置注入 @Configuration 与 @Bean 注解方式注入 @ComponentScan 包扫 ...

  3. spring bean的懒加载原理

    spring bean的懒加载原理 1 普通的bean的 初始化是在初始化阶段开始执行的,而被lazy-init修饰的bean则是从容器第一次进行context.getbean("" ...

  4. java懒加载的原理_每天使用 Spring 框架,那你知道 lazy-init 懒加载原理吗?

    普通的bean的初始化是在容器启动初始化阶段执行的,而被lazy-init修饰的bean 则是在从容器里第一次进行context.getBean("")时进行触发. Spring ...

  5. Spring系列(五):@Lazy懒加载注解用法介绍

    今天给大家介绍@Lazy懒加载注解用法,希望对大家能有所帮助! 1.@Lazy 懒加载注解的概念 SpringIoC容器会在启动的时候实例化所有单实例 bean .如果我们想要实现 Spring 在启 ...

  6. 图片预加载与图片懒加载

    图片预加载与图片懒加载 图片预加载 图片预加载主要是针对非icon类图片. 加载快,有良好的用户体验. 提前加载图片,当用户需要查看时可直接从本地缓存中渲染.可能因为图片很大,浏览器显示出它会用很长的 ...

  7. Spring bean加载多个配置文件

    在一个大的项目结构,Spring bean配置文件位于不同的文件夹以便于维护和模块化.例如,Spring-Common.xml在common 文件夹中,Spring-Connection.xml 在c ...

  8. android预加载布局,Android 懒加载优化

    目录介绍 1.什么是懒加载 1.1 什么是预加载 1.2 懒加载介绍 1.3 懒加载概括 2.实际应用中有哪些懒加载案例 2.1 ViewPager+Fragment组合 2.2 分析源码 3.Vie ...

  9. Spring框架如何加载和定义Spring Bean类?

    本篇介绍什么是Spring Bean类,如何创建Bean类,以及如何将Bean类添加到Spring IOC容器.通过本篇的学习,可以达成如下目标. ● 认识Spring Bean类 ● 掌握Bean类 ...

最新文章

  1. springboot2稳定版本_重要版本Spring Boot 2.3.0发布 - spring.io
  2. Java 并发编程:Synchronized 及其实现原理
  3. 3-3HDFS架构详解
  4. 发布半年依旧无对手!网友:我怎么没听说...
  5. GAdminHttpd:图形化的 Apache 打点对象
  6. VBA 声明 Option Explicit,让代码更规范
  7. PHP踩坑:对象的引用
  8. 多线程——java练习题
  9. 好用的Redis客户端操作工具
  10. java 实现宠物领养_基于JavaEE的宠物领养系统的设计与实现任务书
  11. 安装VMwareTools
  12. 云计算与大数据作业 21大数据 刘佳琪
  13. Mahout in action 中文版-3.推荐器的数据表达
  14. Mysql数据处理,按照半小时汇总数据,
  15. 【NOIP2005 提高组】篝火晚会
  16. 在安装虚拟机时,”intel vt-x 处于禁用状态“ 如何解决
  17. python中,获取字符串的长度
  18. ui设计教程分享:关于Logo设计要素
  19. 0x00007FF8DE6BD1E2 (ucrtbased.dll)处(位于 6-指针与动态内存申请.exe 中)引发的异常: 0xC0000005: 写入位置 0xFFFFFFFF9288D140
  20. PTA 寻找250 (10分)

热门文章

  1. axios Post无法传递数据的解决方案
  2. linux下的图形界面扫雷游戏(Gtk+2.0)
  3. ipv4和计算机地址是什么意思,什么是ipv4 ipv6 ipv9 区别是什么(一) -电脑资料
  4. 实用Python之字符串长度计算
  5. 论文阅读笔记:《Contextual String Embeddings for Sequence Labeling》
  6. 微软云计算介绍与实践(实践之一)
  7. 如何优雅地用ARM开发板搭建服务器
  8. Extjs 4.x 得到form CheckBox的值
  9. 如何进行Android单元测试
  10. 使用Image.GetThumbnailImage 方法返回缩略图