欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

Spring基础第五章

时间:2023-06-16
第五章Spring生命周期 1.控制对象创建次数 1.1控制简单对象创建次数

prototype 每一都会创建新的singleton 只创建一次默认为singleton

1.2控制复杂对象创建次数

public boolean isSingleton() { // true 为单实例 false 每一次都会创建新的对象 return true;}// 如果没有isSingleton方法还是通过 scope属性控制

1.3为什么控制对象创建次数

节省内存1.可以公用的创建一次就可以1.SqlSessionFactory2.DAO3.Service2.不能被公用就需要每次都创建1.Connection2.sqlSession | Session

2.对象的生命周期

1.什么是对象的生命周期一个对象 创建 存活 消亡 的过程2.为什么要学习生命周期由spring来负责对象的创建 存活 销毁 有利于我们使用Spring为我们创建的对象

2.1生命周期的三个阶段

创建阶段

scope = "singleton"Spring工厂在创建的创建如果想获取的时候再创建 lazy-init = "true"scope = "prototype"在我们获取对象的同时创建对象ctx.getBean()

初始化阶段

Spring在创建完对象后,调用完初始化方法,完成对应的初始化操作1.初始化方法由程序员提供的,提供初始化方法,由Spring工厂调用

实现InitializingBean接口

import org.springframework.beans.factory.InitializingBean;public class Product implements InitializingBean { // 1.调用构造器创建对象 public Product() { System.out.println("Product的无参构造器!"); } // 创建完成之后 初始化对象 public void afterPropertiesSet() throws Exception { System.out.println("Product.afterPropertiesSet()"); }}

普通方法

1.提供普通方法public void myInit() { System.out.println("Product.myInit");}2.在spring配置文件中注册

细节分析

1.如果上述方法都有,那么顺序是什么呢?1.Product.afterPropertiesSet()2.Product.myInit()2.如果对象中有成员变量,那么顺序如何呢?注入一定发生在初始化前面1.Product.setPrice() set注入~2.Product.afterPropertiesSet()3.Product.myInit3.什么叫做初始化操作对于资源的初始化数据库IO网络

销毁阶段

什么是销毁spring在销毁对象前,会调用销毁方法,完成销毁操作1.什么时候会销毁创建的对象spring工厂在关闭的时候

实现DisposableBean接口

public void destroy() throws Exception {System.out.println("Product.destroy()");}

普通方法

public void myDestroy() { System.out.println("Product.myDestroy()");}//配置文件:destroy-method="myDestroy"

细节分析

1.销毁方法只适用于scope = "singleton"的对象 重量级对象!2.销毁操作指的是资源的释放io.close()connection.close()

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。