延迟初始化Spring Bean的几种方式
- XML 配置:<bean lazy-init=”true” … />
- Java 注解:@Lazy(true)
Spring 中默认是非延迟加载Bean的,也就是提前把Bean初始化好,用的时候直接用. 优点是运行的时候比较快(提前初始化了,直接用). 缺点是启动慢和占用内存,因为要初始化很多Bean.
延迟加载是需要的时候再去初始化Bean. 优点是解约内存,启动快(不需要提前初始化Bean). 缺点是运行的时候比较慢(用的时候先要初始化才能用).
@Lazy开启Bean延迟加载
DemoApplication.java
package com.rumenz;
public class DemoApplication {public static void main(String[] args) {AnnotationConfigApplicationContext ac=new AnnotationConfigApplicationContext();ac.register(DemoApplication.class);ac.refresh();System.out.println("Spring 上下文启动完成。。。。。");//开启了延迟加载,调用的时候才会初始化final DefaultRumenzFactory bean = ac.getBean(DefaultRumenzFactory.class);ac.close();}@Bean(initMethod = "initMethod")@Lazy //开启延迟加载public static DefaultRumenzFactory defaultRumenzFactory(){return new DefaultRumenzFactory();}
}
DefaultRumenzFactory.java
package com.rumenz;
public class DefaultRumenzFactory implements InitializingBean {public DefaultRumenzFactory() {System.out.println("无参构造方法执行....");}@PostConstructpublic void init(){System.out.println("PostConstruct init.......");}public void initMethod(){System.out.println("init method.......");}@Overridepublic void afterPropertiesSet() throws Exception {System.out.println("afterPropertiesSet.....");}
}
调用ac.getBean(DefaultRumenzFactory.class) 输出
Spring 上下文启动完成。。。。。
xxx.DefaultListableBeanFactory - Creating shared instance of singleton bean 'defaultRumenzFactory'
无参构造方法执行....
PostConstruct init.......
afterPropertiesSet.....
init method.......
不调用ac.getBean(DefaultRumenzFactory.class) 输出
Spring 上下文启动完成。。。。。 //没有调用,所以没有执行初始化
源码:https://github.com/mifunc/Spring-Lazy-Bean
原文: https://rumenz.com/rumenbiji/Spring-Lazy-Bean.html
延迟初始化Spring Bean的几种方式相关推荐
- java 延迟实例化_延迟初始化Spring Bean的几种方式
XML 配置: Java 注解:@Lazy(true) Spring 中默认是非延迟加载Bean的,也就是提前把Bean初始化好,用的时候直接用. 优点是运行的时候比较快(提前初始化了,直接用). 缺 ...
- spring—Bean实例化三种方式
1) 使用无参构造方法实例化 它会根据默认无参构造方法来创建类对象,如果bean中没有默认无参构造函数,将会创建失败 <?xml version="1.0" encoding ...
- 将Bean注入Spring容器的五种方式
将bean放入Spring容器中有哪些方式? 我们知道平时在开发中使用Spring的时候,都是将对象交由Spring去管理,那么将一个对象加入到Spring容器中,有哪些方式呢,下面我就来总结一下 1 ...
- Spring读取配置文件,获取bean的几种方式
Spring读取配置文件,获取bean的几种方式 方法一:在初始化时保存ApplicationContext对象 代码: ApplicationContext ac = new FileSystemX ...
- Spring Boot 获取 Bean 的 3 种方式!还有谁不会?
作者 | chilx 来源 | https://blog.csdn.net/showchi/article/details/97005720 注意:调用者要被spring管理 方式一 注解@PostC ...
- 把对象的创建交给spring来管理—— 1.创建bean的三种方式 2.bean对象的作用范围 3.bean对象的生命周期
把对象的创建交给spring来管理 spring对bean的管理细节 1.创建bean的三种方式 2.bean对象的作用范围 3.bean对象的生命周期 创建Bean的三种方式 ...
- 总结 Spring 注入 bean 的四种方式
一提到 Spring,大家最先想到的是啥?是 AOP 和 IOC 的两大特性?是 Spring 中 Bean 的初始化流程?还是基于 Spring 的 Spring Cloud 全家桶呢? 今天我们就 ...
- 【小家Spring】Spring注解驱动开发---向Spring Ioc容器中注册Bean的7种方式
每篇一句 比你有钱的人一定会比你努力,而比你努力的人终有一天会比你有钱 前言 Spring是一个非常强大的反转控制(IOC)框架,以帮助分离项目组件之间的依赖关系.因此可以说Spring容器对Bean ...
- Spring创建Bean的三种方式的使用和区别
在学习Spring的时候,发现Spring的IOC(控制反转)为我们提供的三种创建Bean的方式. 1.Spring创建Bean的三种方式 这里采用XML配置,分别演示三种创建Bean的方式和代码. ...
最新文章
- python加密库_python基于pyDes库实现des加密的方法
- MYSQL专题-MySQL事务实现原理
- 裸板烧写 bootloader
- Eclipse插件安装的三种方式
- HDU - 5889 Barricade(最短路+最小割-最大流)
- app图标圆角角度_教你如何绘制风格统一的APP界面图标
- JAR清单类路径不仅适用于Java Application Launcher
- System Center 2012R2之SCVMM云部署SCOM(2-2)
- 【华为云技术分享】三大前端技术(React,Vue,Angular)探密(上)
- win10 + VS2015 + EF6 + MySQL
- USACO Broken Necklace
- 让一个软件系统同时支持多个多种数据库灵活配置,让客户可以任意配置各个核心数据库部分...
- SharePoint Designer中无法显示任何列表
- sscom32串口测试软件连接串口时有时会造成设备异常,更换别的串口软件后正常,特此记录
- 普通文件与迅雷、旋风、快车、RayFile的下载地址转换算法
- python用于cad_使用Python实现AutoCAD自动化
- 【通信原理】揭开傅里叶级数与傅里叶变换的神秘面纱
- 华硕AC68U路由器APP远程控制设置方法
- 腾讯云配置密钥使用putty登录 PuTTY实现Windows向Linux上传文件
- 快速下载自己喜欢的网页图片
热门文章
- ASP.NET 数据访问类
- L1-068 调和平均 (10 分)-PAT 团体程序设计天梯赛 GPLT
- [Python] L1-019. 谁先倒-PAT团体程序设计天梯赛GPLT
- 胶水代码(glue code)的定义(粘合代码)
- hadoop yarn 获取日志_Hadoop YARN日志查看方式
- 在LINUX中如何把2个文件中的内容合到另一个文件中
- linux系统环境下压缩与解压缩
- perl如何遍历指定文件夹下的指定扩展名文件,并按时间顺序要求删除
- MESSAGE: [unixODBC][MySQL][ODBC 3.51 Driver]Can't connect to local MySQL server through socket '/tmp
- ES5-String-indexOf/lastIndexOf