Rhythmk 一步一步学 JAVA (13) Spring-2 之Ben懒加载以及生命周期,单例
1、定义Demo类:
package com.rhythmk.spring;
public class User {
public void Init ()
{
System.out.println("User 对象被 创建!");
}
// 计数器
public int Count=0;
public void Say()
{
this.Count++;
System.out.println("User 被"+this.Count+"次初始!");
}
public void Destory()
{
System.out.println("User 对象被销毁!");
}
}
2、init-method:对象初始执行
destroy-method:对象销毁执行:
<bean id="user" class="com.rhythmk.spring.User" init-method="Init" destroy-method="Destory" >
</bean>
执行单元测试:
@Test
public void test() { BeanFactory bean=new ClassPathXmlApplicationContext("applicationContext.xml");
User user=(User)bean2.getBean("user");
user.Say(); } 输出:
User 对象被 创建!
User 被1次初始!
3、scope 包括 singleton单例模式 (默认)
prototype,Request, Session, Global Session
默认applicationContext.xml 配置 添加测试代码:
private static BeanFactory bean= new ClassPathXmlApplicationContext("applicationContext.xml");
@Test
public void test1() {
User user=(User)bean.getBean("user");
user.Say();
}
@Test
public void test2() {
User user=(User)bean.getBean("user");
user.Say();
}
输出:
User 对象被 创建!
User 被1次初始!
User 被2次初始!
修改applicationContext.xml 添加 scope=prototype
<bean id="user" class="com.rhythmk.spring.User" init-method="Init" destroy-method="Destory" scope="prototype">
</bean>
执行如上测试代码:
输出:
User 对象被 创建!
User 被1次初始!
User 被1次初始!
4、 lazy-init 默认为 false ,为true时,则在执行“BeanFactory bean= new ClassPathXmlApplicationContext("applicationContext.xml");”
并未执行初始化,只有在 bean.getBean("user") 才会执行函数初始:
package com.rhythmk.spring;
public class User {
// 计数器
public int Count=0;
public User()
{
System.out.println("User 被"+this.Count+"次初始!");
}
public void Say()
{
this.Count++;
System.out.println("User.Say!");
}
}
4.1 、默认配置:
<bean id="user" class="com.rhythmk.spring.User" lazy-init="false" >
</bean>
输出:
User 被0次初始!
开始执行测试!
User.Say!
4.2 、调整配置:
<bean id="user" class="com.rhythmk.spring.User" lazy-init="true" >
</bean>
输出:
开始执行测试!
User 被0次初始!
User.Say!
Rhythmk 一步一步学 JAVA (13) Spring-2 之Ben懒加载以及生命周期,单例的更多相关文章
- Java类的加载与生命周期
一.概要: 类的生命周期从类的 加载.连接.初始化 开始,到类的 卸载结束: 二.几个阶段: 加载:查找并加载类的二进制数据.(把类的.class文件的二进制数据读入内存,存放在运行时数据区的方法区: ...
- 详解Java 8中Stream类型的“懒”加载
在进入正题之前,我们需要先引入Java 8中Stream类型的两个很重要的操作: 中间和终结操作(Intermediate and Terminal Operation) Stream类型有两种类型的 ...
- Vue 路由懒加载, VueRouter一步完成Vue的路由懒加载 一行代码搞定懒加载
Vue Router路由配置中的component里面配置即可 1 // 路由懒加载的方式加载组件 2 3 component: () => import('@/views/Detail'), ...
- 结合webpack 一步一步实现懒加载的国际化简易版方案
想法来源于工作需求,最后倒腾出一个国际化工作流,期望是这样的: 1. 自动化处理国际化文案(表现为转义翻译人员给到的文件处理成技术人员所识别的文件) 2. 转化后的国际化文件能够按需加载,实现懒加载的 ...
- Java温故而知新(10)类的加载机制
类加载是Java程序运行的第一步,研究类的加载有助于了解JVM执行过程,并指导开发者采取更有效的措施配合程序执行. 研究类加载机制的第二个目的是让程序能动态的控制类加载,比如热部署等,提高程序的灵活性 ...
- Java类中各种静态变量的加载顺序的学习
最近在补<thinking in java>...有一节提到了加载类需要做的一些准备...我照着书本敲了一下代码...同时稍微修改了一下书本上的代码.... package charpte ...
- java 27 - 1 反射之 类的加载器
说到反射,首先说类的加载器. 类的加载: 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化. 加载: 就是指将class文件读入内存,并为之 ...
- Java 单例模式:懒加载(延迟加载)和即时加载
引言 在开发中,如果某个实例的创建需要消耗很多系统资源,那么我们通常会使用惰性加载机制(或懒加载.延时加载),也就是说只有当使用到这个实例的时候才会创建这个实例,这个好处在单例模式中得到了广泛应用.这 ...
- java后台树形结构展示---懒加载
一.数据库设计 二.实体类:entity import com.joyoung.cloud.security.common.validatedGroup.Add;import com.joyoung. ...
随机推荐
- 华为荣耀8 android 让真机显示 DeBug Log调试信息 (真机调试时不显示 Logcat 日志的解决办法)
================================================================ 以下内容转载自: https://blog.csdn.net/aiko ...
- matlab load
参考文献:http://jingyan.baidu.com/article/fec4bce2257963f2618d8bfa.html 对应save,load 命令更加简单. load的方式有三种: ...
- 会议室预定demo mrbs
关于会议室的增删改查 查: HTML: login继承django自带的admin用户认证系统 <!DOCTYPE html> <html lang="en"&g ...
- swift获取图片路径出错
获取图片路径 用以下方式获取 let path = Bundle.main.path(forResource: "ImageName", ofType: "ImageTy ...
- 【机器学习】集成学习之sklearn中的xgboost基本用法
原创博文,转载请注明出处!本文代码的github地址 博客索引地址 1.数据集 数据集使用sklearn自带的手写数字识别数据集mnist,通过函数datasets导入.mnist共1797个样 ...
- tableau-基本函数
一.数据术语 维度——包含诸如文本和日期等类别数据的字段. 度量——包含可以聚合的数字的字段. 二.字段图标 Abc 蓝色图标->离散字段 # 绿色图标->连续字段 =Abc = ...
- window10 下 php7.0 添加Sqlserver扩展
第一步.7.0.x 7.0.x的扩展下载地址: Microsoft Drivers for PHP for SQL Server https://www.microsoft.com/en-us/do ...
- 无法连接到SQL数据库
问题: 连接到服务器------------------------------无法连接到 .. 其他信息:在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.未找到或无法访问服 ...
- C#读取Excel数据操作大全
苦丁茶 发表于 2014-02-10 12:58:00 | 分类标签: ASP.NET 读取Excel 本文介绍下,用C#读取excel数据的例子,包括读取整个工作薄的数据.读取工作薄选定区域中的数据 ...
- chrome安装vue-devtools
安装方法1: 需正常打开chrome商店,搜索vuejs devtools 安装.chrome://extensions/ 开发者工具-扩展程序下启用: 方法2: github下载插件,npm包安装依 ...