当前位置: 首页 > article >正文

Spring系统框架

Spring Framework系统架构

在这里插入图片描述

1.Spring核心概念

代码书写现状

耦合度偏高

解决方案

使用对象时,在程序中不要主动使用new产生对象,转换为外部提供对象

IOC(Inversion of Control)控制反转

对象的创建控制权由程序移到外部,这种思想称为控制反转

解耦

Sping技术对Ioc思想进行了实现

Spring提供了一个容器,称为IOC容器用来充当IOC思想中的“外部”

IOC容器负责对象的创建、初始化等一系列工作,被创建或被管理的对象在IOc容器中同称Bean

DI(Dependency Injection)依赖注入

在容器中建立bean与bean之间的依赖关系的整个过程,称为依赖注入

在这里插入图片描述

目标:充分解藕

使用IOC容器管理bean(IOC )

在ioc容器内将有依赖关系的bean进行关系绑定

最终效果:

使用对象时不仅可以直接从IOC容器中获取,并且获取到的bean已经绑定了所有的依赖关系

IOC入门案例思路分析

  1. 管理什么?(Service与Dao)
  2. 如何被管理的对象告知IOC容器(配置)
  3. 被管理的对象交给IOC容器,如何获取IOC容器?接口
  4. IOC容器得到后,如何从容器中获取bean?(接口方法)
  5. 使用Spring导入那些坐标?(pom.xml)

2.bean的配置

bean基础配置

bean别名配置

bean作用范围配置

在这里插入图片描述
在这里插入图片描述

为什么bean默认为单例?

适合交给容器进行管理的bean

表现层对象

业务层对象

数据层对象

工具对象

不适合交给容器进行管理的bean

封装实体的域对象

3.bean实例化

bean是如何创建的,实例化bean的三种方式

第一种:bean本质上就是对象,创建bean使用构造方法完成

第二种:使用静态工厂

在这里插入图片描述

第三种 实例工厂实例化bean

第四种 使用FactoryBean实例化Bean(第三种方法的变种)

Public clas UserDaoFactoryBean implements FactortyBean<UserDao>{
    public UserDao getObject() throws Exception{
        return new UserDaoImpl();  //获得bean的实例的
    }
    public Class<?>getObjectType(){
        return UserDao.class;//获得bean 的类型的
    }
    public boolean isSingleton(){
	return false;//true 返回的是单例对象,false返回的不是单例对象
    }
}

在这里插入图片描述

4.bean的生命周期

生命周期:从创建到消亡的完整过程

bean生命周期Lbean从创建到销毁的整体过程

bean 生命周期控制:在bean创建后到销毁前做一些事情

在这里插入图片描述

在这里插入图片描述

初始化容器

1.创建对象(内存分配)

2.执行构造方法

3.执行属性注入(set操作)

4.执行bean初始化方法

使用bean

1.执行业务操作

关闭/销毁容器

1.执行bean销毁方法

在这里插入图片描述

在这里插入图片描述

5.setter注入(依赖注入)

向一个类中传递数据的方法有几种

普通方法(set)

构造方法

思考:依赖注入描述了在容器中建立bean与bean之间依赖关系的过程,如果bean运行需要的是数字或字符串呢?

引用类型

简单类型(基本数据类型与String)

依赖注入方式

setter注入

简单类型

引用类型

构造器注入

简单类型

引用类型

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

依赖注入方式选择

1.强制依赖使用构造器进行,setter注入有概率不进行注入导致null对象出现

2.可选依赖使用setter注入进行,灵活性强

3.Spring框架倡导使用构造器,第三方框架内部大多数采用构造器注入的形式数据初始化,相对严谨

4.如果有必要可以两者同时使用,使用构造器注入完成强制依赖,使用setter注入完成可选依赖的注入

5.实际开u发过程中还要根据实际情况分析,如果受控对象没有提供setter方法就必须使用构造器注入

6.自己开发的模块推荐使用setter注入

6.自动装配

Ioc容器根据bean所依赖的资源在容器中自动查找并注入到bean中的过程称为自动装配

自动装配方式

按类型(常用)

按名称

按构造方法

不启用自动装配

在这里插入图片描述

自动装配用于引用类型依赖注入,不能对简单类型进行操作

只有按类型装配时(byType)必须保障容器中相同类型的bean唯一,推荐使用

使用按名称装配时(byName)必须保障容器中具有指定名称的bean,因变量名与配置耦合,不推荐使用

自动装配优先级低于setter注入与构造器注入,同时出现时自动装配配置失效

7.集合注入

在这里插入图片描述

引用类型

在这里插入图片描述

8.核心容器总结‘

BeanFactory是IOC容器的顶层接口,初始化BeanFactory对象时,加载的bean延迟加载

ApplicationContext接口时Spring容器的核心接口,初始化时bean立即加载

ApplicationContext接口时提供基础的bean’操作相关方法,通过其他接口扩展其功能

ApplicationContext接口常用初始化类

ClassPathXmlApplicationContext

FileSystemXmlApplicationContext

在这里插入图片描述

延迟加载

ApplicationContext接口时Spring容器的核心接口,初始化时bean立即加载

ApplicationContext接口时提供基础的bean’操作相关方法,通过其他接口扩展其功能

ApplicationContext接口常用初始化类

ClassPathXmlApplicationContext

FileSystemXmlApplicationContext

在这里插入图片描述


http://www.kler.cn/a/390375.html

相关文章:

  • Flutter Getx状态管理
  • 深入解析 OpenHarmony 构建系统-4-OHOSLoader类
  • 基于迭代重加权最小二乘法的算法及例程
  • 10款PDF合并工具的使用体验与推荐!!!
  • 带你掌握springboot集成SpringSecurity安全框架
  • 深入理解 Vue v-model 原理与应用
  • Pytorch学习--神经网络--完整的模型训练套路
  • 【韩老师零基础30天学会Java 】06章 数组、排序和查找
  • Android 源码的下载与编译
  • yolo v11相关文件
  • 机器视觉中常用图像处理库都有哪些?重点关注.net
  • Qt 编写插件plugin,支持接口定义信号
  • 【日志】力扣167.两数之和2 - 输入有序数组 // Unity——Roll A Ball(一)
  • diboot低代码中使用junit测试controller,入参不生效问题解决
  • Java学习教程,从入门到精通,Java修饰符语法知识点及案例代码(23)
  • openlayers实现图层裁剪,只展示关心区域,抹掉无关区域,“抠”地图
  • ARM64环境使用docker-compose进行ElasticSearch8集群部署
  • Scala中的可变Map操作:简单易懂指南 #Scala Map #Scala
  • CTF 入门指南:从零开始学习网络安全竞赛
  • 数据结构 栈和队列
  • kafka面试题解答(四)
  • 软件测试学习记录 Day1
  • Mysql中数据添加,修改,删除
  • python实战(七)——基于LangChain的RAG实践
  • Simulink对仿真数据进行FFT频谱分析
  • Unity中IK动画与布偶死亡动画切换的实现