首页 > 其他分享 >Spring5学习随笔-生命周期、自定义类型转换器、后置处理Bean

Spring5学习随笔-生命周期、自定义类型转换器、后置处理Bean

时间:2023-11-17 12:00:24浏览次数:46  
标签:初始化 自定义 配置文件 Spring bean String Bean public Spring5

学习视频:【孙哥说Spring5:从设计模式到基本应用到应用级底层分析,一次深入浅出的Spring全探索。学不会Spring?只因你未遇见孙哥】

第十章、对象的生命周期

1.什么是对象的生命周期

指的是一个对象创建、存活、消亡的一个完整过程

2.为什么要学习对象的生命周期

由Spring负责对象的创建、存活、销毁,了解生命周期,有利于我们使用好Spring为我们创建的对象

3.生命周期的3个阶段

  • 创建阶段

    Spring工厂何时创建对象

    • scope=”singleton”

      Spring工厂创建的同时,创建对象

      注意:如果要在ctx.getBean(””)的时候创建对象可以设置

    • scope=”prototype”

      Spring工厂会在获取对象的同时,创建对象
      ctx.getBean(””)

  • 初始化阶段

    Spring工厂在创建完对象后,调用对象的初始化方法,完成对应的初始化操作

    1. 初始化方法提供:程序员根据需求,定义初始化方法,最终完成初始化操作
    2. 初始化方法调用:Spring工厂进行调用
    • InitalizingBean接口

      // 程序员根据需求、实现的方法,完成初始化操作
      public void afterProperitesSet()
      
    • 对象中提供一个普通的方法

      public void myInit(){
      
      }
      // 在配置文件中 调用init-method 也可以实现初始化操作
      <bean id="product" class="xxx.Product" init-method="mtInit"
      
    • 细节分析

      1. 如果一个对象即实现InitializingBean 同时又提供普通的初始化方法,那他们的顺序是什么

        先执行InitialzingBean再执行普通的初始化方法

      2. 注入一定发生再初始化操作的前面

      3. 什么是初始化操作

        资源的初始化:数据库 IO 网络

  • 销毁阶段

    Spring销毁对象前,会调用对象的销毁方法,完成销毁操作

    1. Spring什么时候销毁所创建的对象

      ctx.close();

    2. 销毁方法:程序员根据自己的需求,定义销毁方法,完成销毁操作

      调用:Spring工厂完成调用

    • DisposableBean (spring提供的接口)

      public void destroy()thorws Exception{
      
      }
      
    • 定义一个普通的销毁方法,在配置文件配置

      <bean id="product"  destroy-method="myDestroy"/>
      
    • 细节分析

      1. 销毁方法的操作只适用于scope=”singleton“

      2. 什么叫做销毁操作

        主要指的是 资源的释放操作,io.close() connection.close();

第十一章、配置文件参数化

  • 把Spring配置文件中需要经常修改的字符串信息,转移到一个更小的配置文件中。
    1. Spring的配置文件中存在需要经常修改的字符串?

      存在,以数据库连接相关的参数 代表

    2. 经常变化字符串,在Spring的配置文件中,直接修改,不利于项目维护(不好修改)

    3. 转移到一个小的配置(.properties)

      利于维护(修改)

配置文件参数化:利于Spring文件的维护(修改)

1.配置文件参数的开发步骤

  • 提供一个小的配置文件(.properities)

    jdbc.DriverClassName = com.mysql.jdbc.Driver
    jdbc.url = jdbc:mysql://localhost:3306/myschool?useSSL=false&amp;allowPublicKeyRetrieval=true
    jdbc.username = root
    jdbc.password = 123456
    
  • Spring的配置文件与小配置文件进行整合

    applicationContext.xmgl
    <context:property-placeholder location="classpath:/db.properties"/>
    
  • 在Spring配置文件中通过${key}获取小配置文件中对应的值

第十二章、自定义类型转换器

1.类型转换器

相关文章

  • vue本地开发的时候自定义域名端口
    找到如下文件以记事本方式打开并插入以下代码127.0.0.1localhost127.0.0.1 test.hhProject.com #将此域名指向127.0.0.1本地环境再在项目的配置文件中配置域名和端口即可exportdefaultdefineConfig({plugins:[vue()],server:{host:'test.hhProject.com',......
  • java: Apache NetBeans IDE 19
     添加.jar文件/***encoding:utf-8*版权所有2023涂聚文有限公司*许可信息查看:*描述:*#Author:geovindu,GeovinDu涂聚文.*#IDE:ApacheNetBeansIDE19windows10Java17*#Datetime:2023-2023/11/16-12:29*#User:g......
  • 11月16日自定义对象类型
    目录对象类型1.自定义对象2.给对象添加值3.修改对象的值4.循环取值的情况5.特别的情况对象类型1.自定义对象js内对象确实是键值对的集合,但并不仅限于使用字符串作为键。js对象可以使用字符串、数字或符号作为键。通常是用字符串当键值。通常的例子如下vara={name:"nick",......
  • 爱芯元智AX650N部署yolov5 自定义模型
    爱芯元智AX650N部署yolov5s自定义模型本博客将向你展示零基础一步步的部署好自己的yolov5s模型(博主展示的是安全帽模型),利用yolov5官方的代码工具导出onnx模型,并通过onnxsim自带的工具精简网络结构,导出子图,为了Pulsar2工具进行处理模型做准备。获得自定义训练得到的yolov5s......
  • 使用js添加按钮,vue页面 el-calendar 添加自定义按钮
    html代码:<divclass="schedule"><divclass="title">今日日程</div><divclass="allSchedule"><el-rowclass="addSchedule"type="flex"align="......
  • uniapp微信小程序图片裁剪插件,支持自定义尺寸、定点等比例缩放、拖动、图片翻转、剪切
    uniapp微信小程序图片裁剪插件,支持自定义尺寸、定点等比例缩放、拖动、图片翻转、剪切圆形/圆角图片、定制样式,功能多性能高体验好注释全。1.效果预览:      5.引入插件项目代码:Homilier/qf-image-cropper·GitCode使用HBuilderX导入项目:图片裁剪插件-DCloud......
  • 视频直播系统源码,自定义背景和状态管理
    视频直播系统源码,自定义背景和状态管理1.源码 Future<T>showModalBottomSheet<T>({  @requiredBuildContextcontext,  @requiredWidgetBuilderbuilder,  ColorbackgroundColor,  //面板背景颜色  doubleelevation,  ShapeBordershape,  Clipcl......
  • Spring5学习随笔-IOC(反转控制)、DI(依赖注入)和创建复杂对象
    学习视频:【孙哥说Spring5:从设计模式到基本应用到应用级底层分析,一次深入浅出的Spring全探索。学不会Spring?只因你未遇见孙哥】第七章、反转控制与依赖注入1.反转(转移)控制(IOCinverseofControl)控制:对于成员变量赋值的控制权反转控制:把对于成员变量赋值的控制权,从代码......
  • Java中的Comparator自定义排序
    需求:将指定数据中的数据,按照字母中包含的数字大小进行排序测试代码:publicstaticvoidmain(String[]args){List<String>list=newArrayList<>();list.add("QW34");list.add("QW21");list.add("QW12");list.add("QS34"......
  • SpringBean生命周期之PostConstruct、PreDestroy详解
    @PostConstruct less复制代码@Documented@Retention(RUNTIME)@Target(METHOD)public@interfacePostConstruct{}该注解只能作用于方法上,执行依赖注入后执行任何初始化操作。必须在类投入服务之前调用此方法。应用PostConstruct的方法可以是公共的、受保护的......