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. ...
随机推荐
- 程序设计入门-C语言基础知识-翁恺-第一周:简单的计算程序-详细笔记(一)
目录 第一周:简单的计算程序 1.1 第一个程序 Hello World! 1.2 变量 1.3 计算 1.4 编程作业及课后讨论 第一周:简单的计算程序 1.1 第一个程序 Hello World! ...
- Python 实现windows后台服务
# -*- coding: utf-8 -*- import sys import win32api import win32con import win32event import win32ser ...
- Win32 程序在启动时激活前一个启动程序的窗口
UWP 程序天生单实例.当然,新 API (10.0.17134)开始也提供了多实例功能.不过,传统 Win32 程序可就要自己来控制单实例了. 本文介绍简单的几个 Win32 方法调用,使 Win3 ...
- python当前路径
os.getcwd()获取系统路径 sys.path [0]获取当前路径
- sublime python运行插件
Tools->New plugin 粘贴下面代码,在插件目录新建文件夹,保存 import sublime, sublime_plugin import os class ExampleComm ...
- 网络赛牡丹江赛区E ZOJ3813(线段树)
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5345 给定序列P,定义序列S为P反复重复得到的一个无穷长的序列: if P = ...
- HttpMessageConvert
1. 我们先来看看框架会自动注册哪些httpmessageconvert? 在哪个地方开始注册的? 在对mvc:annotation-driven解析的AnnotationDrivenBeanDefi ...
- parcel vue 简单使用
1.安装依赖 yarn global add parcel-bundler yarn add babel-preset-env --dev yarn add parcel-plugin-vue --d ...
- cnpm 私服搭建(基于docker)
备注: 使用docker-compose 进行安装 1. 代码clone git clone https://github.com/cnpm/cnpmjs.org.git 2. docker bu ...
- luarocks yum 安装引起的lapis lua 包查找问题(centos7版本)
备注: 大家在进行lapis 开发的时候有些人比较懒直接使用yum 按照luarocks,之后 使用luarocks 安装lapis 一般来说对于linux 64位的环境都会有些问题(包找 ...