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懒加载以及生命周期,单例的更多相关文章

  1. Java类的加载与生命周期

    一.概要: 类的生命周期从类的 加载.连接.初始化 开始,到类的 卸载结束: 二.几个阶段: 加载:查找并加载类的二进制数据.(把类的.class文件的二进制数据读入内存,存放在运行时数据区的方法区: ...

  2. 详解Java 8中Stream类型的“懒”加载

    在进入正题之前,我们需要先引入Java 8中Stream类型的两个很重要的操作: 中间和终结操作(Intermediate and Terminal Operation) Stream类型有两种类型的 ...

  3. Vue 路由懒加载, VueRouter一步完成Vue的路由懒加载 一行代码搞定懒加载

    Vue Router路由配置中的component里面配置即可 1 // 路由懒加载的方式加载组件 2 3 component: () => import('@/views/Detail'), ...

  4. 结合webpack 一步一步实现懒加载的国际化简易版方案

    想法来源于工作需求,最后倒腾出一个国际化工作流,期望是这样的: 1. 自动化处理国际化文案(表现为转义翻译人员给到的文件处理成技术人员所识别的文件) 2. 转化后的国际化文件能够按需加载,实现懒加载的 ...

  5. Java温故而知新(10)类的加载机制

    类加载是Java程序运行的第一步,研究类的加载有助于了解JVM执行过程,并指导开发者采取更有效的措施配合程序执行. 研究类加载机制的第二个目的是让程序能动态的控制类加载,比如热部署等,提高程序的灵活性 ...

  6. Java类中各种静态变量的加载顺序的学习

    最近在补<thinking in java>...有一节提到了加载类需要做的一些准备...我照着书本敲了一下代码...同时稍微修改了一下书本上的代码.... package charpte ...

  7. java 27 - 1 反射之 类的加载器

    说到反射,首先说类的加载器. 类的加载: 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化. 加载: 就是指将class文件读入内存,并为之 ...

  8. Java 单例模式:懒加载(延迟加载)和即时加载

    引言 在开发中,如果某个实例的创建需要消耗很多系统资源,那么我们通常会使用惰性加载机制(或懒加载.延时加载),也就是说只有当使用到这个实例的时候才会创建这个实例,这个好处在单例模式中得到了广泛应用.这 ...

  9. java后台树形结构展示---懒加载

    一.数据库设计 二.实体类:entity import com.joyoung.cloud.security.common.validatedGroup.Add;import com.joyoung. ...

随机推荐

  1. IT NEWS WebSite

    1.http://stackoverflow.com/ 2.google news 订阅 3.(IOS/Android/Java/Html5/JavaScript..)weekly 4.http:// ...

  2. IOI2002 POJ1054 The Troublesome Frog 讨厌的青蛙 (离散化+剪枝)

    Description In Korea, the naughtiness of the cheonggaeguri, a small frog, is legendary. This is a we ...

  3. HTTP Client Performance Improvements

    HTTP Client Performance Improvements https://blogs.msdn.microsoft.com/webdev/2018/10/17/asp-net-core ...

  4. python嵌入c++

    1.去主页下载源代码项目 2.编译下载下来的项目 3.新建项目填入下面代码 // pythonIncludeTest.cpp : 定义控制台应用程序的入口点. // #include "st ...

  5. linux 系统下配置maven环境

    1.首先到Maven官网下载安装文件,目前最新版本为3.0.3,下载文件为apache-maven-3.0.3-bin.tar.gz,下载可以使用wget命令: 2.解压源码包 通过终端在/usr/l ...

  6. smarty 模板编译和变量调节器 模板引入

    <?php require './smarty/Smarty.class.php'; $sm = new Smarty; //$sm->force_compile = true; $sm- ...

  7. python 与时间有关的操作

    python保存时间戳文件 import time # ISOTIMEFORMAT='%Y-%m-%d %X' ISOTIMEFORMAT='%Y-%m-%d' t= time.strftime( I ...

  8. bzoj 2039 [2009国家集训队]employ人员雇佣——二元关系

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2039 用最小割看.对于一组关系 i , j ,如果都选,收益 2*Ei,j,可以看作0,作为 ...

  9. winform下实现pictureBox全屏播放

    最近开发一个项目,需要通过双击pictureBox实现全屏的功能,网上查找资料,加上一点摸索,最终实现了.做一下记录,以备以后需要. 主要功能都在下面这个类里面 using System; using ...

  10. linux mount / umount 命令的基本用法 及 开机自动挂载

    格式:mount [-参数] [设备名称] [挂载点] 其中常用的参数有: -a 安装在/etc/fstab文件中类出的所有文件系统. -f 伪装mount,作出检查设备和目录的样子,但并不真正挂载文 ...