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. ...
随机推荐
- EP-N8530S USB WIFI 驱动移植
/*********************************************************************** * EP-N8530S USB WIFI 驱动移植 * ...
- windows之死活格式化不了D/E/F盘
唉 见教程:Win10系统无法格式化电脑D盘的解决方法
- ThreadDeath 理解
public class RunnableTest2 { public static Object obj1 = new Object(); public static Object obj2 = n ...
- Docker学习(三)docker容器操作
上一篇:Docker学习(二)docker镜像操作 容器是基于镜像创建的,说白了把一个镜像运行起来就是容器 查看容器 docker ps 上面什么也没有,因为我们没有正在运行的容器,下面我门启动一个容 ...
- Maven系列(一)之初识Maven
Maven是个啥? Maven主要服务于基于Java平台的项目构建.依赖管理和项目信息管理,并且Maven是跨平台的,这意味着无论是在Windows上,还是在Linux或者Mac上,都可以使用同样的命 ...
- php 中的 Output Control 函数
先看一个简单的例子 <?php ob_start(); echo 111; ob_clean(); echo 222; ob_start()开启ob缓存,然后111放进了ob缓存, 再调用ob_ ...
- 《DSP using MATLAB》示例Example6.18、6.19
- 接口测试基础——第6篇unittest模块(一)
我们先来简单介绍一下unittest框架,先上代码,跟住了哦~~ 1.建立如下结构的文件夹: 注意,上面的文件夹都是package,也就是说你在new新建文件夹的时候不要选directory,而是要选 ...
- 【angularJS】定义模块angular.module
模块定义了一个应用程序.控制器通常属于一个模块. JavaScript 中应避免使用全局函数.因为他们很容易被其他脚本文件覆盖. AngularJS 模块让所有函数的作用域在该模块下,避免了该问题. ...
- LeetCode 973. K Closest Points to Origin
原题链接在这里:https://leetcode.com/problems/k-closest-points-to-origin/ 题目: We have a list of points on th ...