首页 > 其他分享 >[Spring]——IOC,DI,Bean的生命周期

[Spring]——IOC,DI,Bean的生命周期

时间:2024-10-17 18:46:25浏览次数:3  
标签:初始化 生命周期 对象 Spring Bean spring 方法 IOC

目录

一.反转(转移)控制 (IOC)

二.DI 依赖注入

三.bean的生命周期

1.对象的生命周期

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

3.生命周期的三个阶段

(1)创建

(2)初始化方法

两种实现方法

细节问题

(3)销毁(资源释放的操作)

两种实现方法(和初始化的差不多)

细节分析

4.对象生命周期的总结

完整代码

5.后置处理Bean

1.介绍

2.开发步骤


一.反转(转移)控制 (IOC)

控制:对于成员变量赋值的控制权
反转控制:把对于成员变量赋值的控制权,从代码中反转(转移)到Spring工厂和配置文件中完成
好处:解耦合
底层实现:工厂设计模式

二.DI 依赖注入

我需要你,也就是依赖你,我就把你当做我的成员变量,继而通过spring的配置文件进行赋值,注入

三.bean的生命周期

方便理解

1.对象的生命周期

一个对象创建,存活,消亡的一个完整过程

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

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

3.生命周期的三个阶段

(1)创建

Application ctx = new ClassPathXmlApplicationContext("/application.xml") ->创建对象

得到结果

上面的代码就相当于new对象,实现对象的构造方法

(2)初始化方法

Spring工厂在创建完对象后,调用对象的初始化方法,完成对应的初始化操作
Application ctx = new ClassPathXmlApplicationContext("/application.xml") ->创建对象,构造方法就会执行
1.初始化方法提供:程序员根据需求,提供初始化方法,最终完成初始化操作
2.初始化方法调用:Spring工厂进行调用

两种实现方法
  • InitializingBean接口
这个方法 
//程序员根据需求,实现的方法,完成初始化操作
public void afterPropertieSet()
{里面就写一些初始化操作}  
使用该方法实现接口,完成初始化操作
  • 提供一个普通方法 myInit
public void myInit()
{里面就写一些初始化操作}  

<bean id="product"   class="xxx.Product" init-method="myInit"/> 
//要告诉spring,通过配置文件
细节问题
  • 如果⼀个对象即实现InitializingBean 同时⼜提供的 普通的初始化⽅法

  • 如果对象里有属性,需要set方法注入赋值。如果有注入的需求(DI),那到底是先注入呢还是先初始化呢?

答案是:先注入,后初始化,这也是为什么初始化方法叫做afterPropertieSet()

(3)销毁(资源释放的操作)

两种实现方法(和初始化的差不多)
  • DisposableBean接口
public void destrot(){
    
}
  • 自己定义

细节分析

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

4.对象生命周期的总结

完整代码

5.后置处理Bean

1.介绍

BeanPostProcessor(是个接口)作用:对spring工厂创建的所有对象,进行加工

在AOP底层实现中很重要!(可以看我的这一篇文章)

工厂创建对象的过程

引入BeanPostProcessor后,流程变为了

2.开发步骤

  • 进行配置

想改变(加工)名字

  • 类实现beanpostprocessor接口

  • 配置文件(告知spring,我们自己写了一个方法,让spring帮我们创建对象)

标签:初始化,生命周期,对象,Spring,Bean,spring,方法,IOC
From: https://blog.csdn.net/qq_45730261/article/details/143025133

相关文章

  • 基于Springboot技术的高校实验室教学管理系统的设计与实现---附源码 53564
    目 录摘要1绪论1.1研究背景与意义1.2国内外研究现状1.3论文结构与章节安排2 计算机实验室管理平台系统分析2.1可行性分析2.1.1技术可行性分析2.1.2 经济可行性分析2.1.3社会可行性分析2.2系统功能分析2.2.1功能性分析2.2.2非功能性分......
  • 基于SpringBoot及Vue的银行卡业务系统的设计与实现---附源码53473
    目 录摘 要1绪论1.1研究背景1.2研究意义1.3论文结构与章节安排2 银行卡业务系统系统分析2.1可行性分析2.2系统流程分析2.2.1数据增加流程2.2.2数据修改流程2.2.3数据删除流程2.3 系统功能分析2.3.1功能性分析2.3.2非功能性分析......
  • ES推荐搜索、自动补全,并且springBoot集成
    推荐搜索在搜索过程中,因为单词的拼写错误,没有得到任何的结果,希望ES能够给我们一个推荐搜索。GETmovies/_search{"suggest":{#title_suggestion为我们自定义的名字"title_suggestion":{"text":"drema","term......
  • java毕业设计-基于Springboot的教学资源共享平台【代码+论文+PPT】
    全文内容包括:1、采用技术;2、系统功能;3、系统截图;4、部分代码;5、配套内容。索取方式见文末微信号,欢迎关注收藏!一、采用技术语言:Java1.8框架:Springboot数据库:MySQL5.7、8.0开发工具:IntelliJIDEA旗舰版其他:Maven3.8以上二、系统功能成绩管理:记录和追踪学生课程成绩,便于......
  • SpringMVC
    目录SpringMVC概述SpringMVC主要组件SpringMVC和MVC的关系SpringMVC常用注解SpringMVC概述SpringMVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分。简化开......
  • Spring AI 调用 openAI大模型案例
    SpringAI学习目标:通过SpringAI对接各种主流大模型,包括聊天问答,语音,图像等操作开发环境和版本要求:jdk版本:17.x及以上。SpringBoot版本要求3.x。学习前提条件:有java基础,并且能熟练使用SpringBoot。熟悉OpenAI,有OpenAI的APIkey(淘宝自己买),也可以使用国内中转(直连)的账......
  • vue入门案例-基本使用----非常适合初学者。言简意赅,没有废话。附带springboot+vue前后
    Listitemvue1.vue介绍渐进式JavaScript框架,易学易用,性能出色,适用场景丰富的Web前端框架地址:https://cn.vuejs.org/什么是vue?Vue(发音为/vjuː/,类似view)是一款用于构建用户界面的JavaScript框架。它基于标准HTML、CSS和JavaScript构建,并提供了一套声明......
  • java毕业设计-基于Springboot的小型企业客户关系管理系统【代码+论文+PPT】
    全文内容包括:1、采用技术;2、系统功能;3、系统截图;4、部分代码;5、配套内容。索取方式见文末微信号,欢迎关注收藏!一、采用技术语言:Java1.8框架:Springboot数据库:MySQL5.7、8.0开发工具:IntelliJIDEA旗舰版其他:Maven3.8以上二、系统功能产品管理:集中维护产品信息,包括添加、......
  • 构建高效在线考试平台:Spring Boot与JavaWeb的融合
    1系统概述1.1研究背景随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理基于JavaWeb技术的在线考试系统设计与实现的相关信息成为必然。开发合适的基于JavaWeb技术......
  • Spring Boot驱动的在线考试系统:JavaWeb技术实战
    1系统概述1.1研究背景随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理基于JavaWeb技术的在线考试系统设计与实现的相关信息成为必然。开发合适的基于JavaWeb技术......