spring 的理解

news2024/11/18 8:26:22

spring 的理解

  1. spring 是一个基础的框架,同时提高了一个Bean 的容器,用来装载Bean对象
  2. spring会帮我们创建Bean 对象并维护Bean对象 的生命周期。
  3. 在spring 框架上,还有springCloud,spring Boot 的技术框架,都是以Spring为基石的
  4. spring 有两个核心,就是IOC和AOP

Spring IOC 是什么?

  • 控制反转,将对象和对象的关系由spring 统一管理,而这些对象统称 Bean
  • IOC本质上就是一个对象工厂:使用时需要将bean实例化,
    Spring提供了IOC容器的两种实现方式
    ​ ① BeanFactory接口:是面向Spring本身的,不是提供给开发人员使用的
    ​ ② ApplicationContext接口:BeanFactory的子接口,面向开发人员使用

Spring AOP 是什么?

  • 面向切面编程
  • 我们可以将一些与业务逻辑无关的代码,来通过切面来实现,比如:日志,权限控制,事务管理,接口限制
  • 在使用中,我们需要实现前置方法,后置方法,通知等

IOC 容器是怎么实现的?

  1. 配置Bean
    通过xml或者是@Component @Bean 等进行配置

  2. 解析Bean,得到BeanDefinition定义对象
    通过 BeanDefintionReader 将 bean 进行解析,准备要创建的bean对象的定义对象BeanDefinition,存放到BeanDefintionMap 中,将beanName和bean值进行保存

  3. 实例化bean
    BeanFactory通过反射的方式j将BeanDefinition定义对象实例化成具体的bean对象
    注意:在这之前也可以进行beanFactoryPostProcessor(Bean的增强器)的处理,我们可以根据获取到的BeanDefinition 定义对象做特殊处理

  4. 初始化Bean
    (1)填充属性: 通过populateBean 填充属性
    (2)执行aware 接口所实现的方法:方便通过bean对象来获取容器中的属性值
    (3)调用BeanPostProcessor前置处理方法:AOP等都在这里实现
    (4)调用init-mehtod方法
    (5)调用BeanPostProcessor的后置处理方法

  5. 生成Bean
    通过getBean方法可以直接获取

  6. 销毁Bean

Bean 的生命周期

在这里插入图片描述

1 实例化bean: BeanFactory通过反射的方式j将BeanDefinition定义对象实例化成具体的bean对象
2. 填充属性: 通过populateBean 填充属性
3. 执行aware 接口所实现的方法:方便通过bean对象来获取容器中的属性值
4. 调用BeanPostProcessor前置处理方法:
5. 调用 init-mehtod方法
6.调用BeanPostProcessor的后置处理方法:AOP等都在这里实现
7. 通过getBean 来获取Bean
8. x销毁Bean

扩展

Spring是如何简化开发的?

  • 通过依赖注入和面向接口实现松耦合
  • 基于切面和惯例进行声明式编程
  • 通过切面和模板减少样板式代码

Spring IOC的实现机制

  • 简单工厂
  • 反射

什么是Bean,什么是对象

  • Spring 管理对象Bean
  • bean 一定时对象,对象不一定是Bean

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1548182.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

centos7 使用docker安装了mongo 怎么设置远程链接,必须使用密码才能连接

docker run -d –name mongodb_container -e MONGO_INITDB_ROOT_USERNAMEroot -e MONGO_INITDB_ROOT_PASSWORDroot -e MONGO_INITDB_DATABASEdataserver -p 27017:27017 \ 无法在mongo容器里编辑文件 如果你无法直接编辑 MongoDB 容器内的配置文件,你可以尝试…

ClickHouse10-ClickHouse中Kafka表引擎

Kafka表引擎也是一种常见的表引擎,在很多大数据量的场景下,会从源通过Kafka将数据输送到ClickHouse,Kafka作为输送的方式,ClickHouse作为存储引擎与查询引擎,大数据量的数据可以得到快速的、高压缩的存储。 Kafka大家…

碳课堂|什么是碳资产?企业如何进行碳资产管理?

碳资产是绿色资产的重要类别,在全球气候变化日益严峻的背景下备受关注。在“双碳”目标下,碳资产管理是企业层面实现碳减排目标和低碳转型的关键。 一、什么是碳资产? 碳资产是以碳减排为基础的资产,是企业为了积极应对气候变化&…

华为昇腾asend

昇腾Ascend C编程语言 Ascend C原生支持C/C编程规范,通过多层接口抽象、并行编程范式、孪生调试等技术,极大提高了算子的开发效率,帮助AI 参考文章 手把手教你在昇腾平台上搭建PyTorch训练环境 - 哔哩哔哩 (bilibili.com)https://www.bilibi…

【Java面试题】计算机网络

文章目录 1.计算机网络基础1.1网络分层模型/OSI七层模型是什么?1.2TCP/IP四层模型是什么?每一层的作用?1.2.1TCP四层模型?1.2.2为什么网络要分层? 1.2常见网络协议1.2.1应用层常见的协议1.2.2网络层常见的协议 2.HTTP2…

基于springboot实现大学生入学审核系统项目【项目源码+论文说明】

基于springboot实现大学生入学审核系统演示 摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了大学生入学审核系统的开发全过程。通过分析大学生入学审核系统管理的不足,创建了一个计算机管理大学生入…

大数据开发(日志离线分析项目)

大数据开发(日志离线分析项目) 一、项目需求1、使用jqueryecharts的方式调用程序后台提供的rest api接口,获取json数据,然后通过jquerycss的方式进行数据展示。工作流程如下:2、七大角度1、用户基本信息分析模块2、浏览…

微信怎么恢复聊天记录?效果惊人的3个方法

微信作为我们日常生活中最常用的即时通讯工具之一,承载着我们与亲友之间的重要沟通记录。然而,不可避免地会遇到误删聊天记录的情况,可能是因为手误、设备问题或其他原因。 当我们发现重要的聊天记录不见了,往往会感到焦虑和困扰…

ValueError: Cannot load file containing pickled data when allow_pickle=False

问题描述 遇到报错:ValueError: Cannot load file containing pickled data when allow_pickleFalse 解决方案 经过查阅有人说是与numpy的版本有关,但是还是不要轻易改变环境中的版本,不一定哪个地方就会报错。这里放个解决方案:…

量化交易入门(二十二)MACD指标实现,能挣到钱吗?

学习了MACD指标以后,我们通过量化回测来验证一下,这个指标能否帮我们挣到钱。我们还是使用Backtrader框架,实现MACD的交易策略,然后用苹果股票历史数据完成这个示例。 示例代码如下: import backtrader as bt import…

server端

一、创建项目 expess server 1.1 安装nodemon npm i nodemon 1.2 设置连接数据库mongodb 安装mongoose npm i mongoose 在根目录新建config文件夹/db.config.js // 引入mongodb数据库操作模块 const mongoose require("mongoose") // 连接数据库mongoose.con…

【Git】日志功能

1. git日志显示 # 显示前3条日志 git log -3# 单行显示 git log --oneline# 图表日志 git log --graph# 显示更改摘要 git log --stat# 显示更改位置 git log --patch 或 git log -p# 查看指定文件的提交历史记录 git log {filename}例子1:单行显示 例子2&#xff…

自学编程的六种方法,你必须知道

随着互联网日趋迅猛,编程已经在我们生活当中无处不在了。众所周知,程序员的工资都很不错,于是越来越多的人,都想加入到编程的行业中来。那么如何加入到程序员的行业当中? PHP从入门到放弃,C语言从入门到放…

3款免费甘特图制作工具的比较和选择指南

GanntProject GanttProject https://www.ganttproject.biz/ 是一款项目管理和调度应用,适用于 Windows、macOS 和 Linux。它易于使用,无需任何设置,适用于个人用户和小型团队。该应用提供任务层次结构和依存关系、里程碑、基准行、Gantt 图表…

【深度学习】最强算法模型之:潜在狄利克雷分配(LDA)

潜在狄利克雷分配 1、引言2、潜在狄利克雷分配2.1 定义2.2 原理2.3 算法公式2.4 代码示例 3、总结 1、引言 小屌丝:鱼哥, 给我讲一讲LDA 小鱼:LDA? 你指的是? 小屌丝:就是算法模型的LDA啊, 你…

基于XGBoost和数据预处理的电动汽车车型预测

基于XGBoost和数据预处理的电动汽车车型预测 文章目录 基于XGBoost和数据预处理的电动汽车车型预测1、前言2、导入数据3、各县电动汽车采用情况条形图4、电动车类型饼图5、前5最欢迎的电动车制造商6、XGBoost模型6.1 字符串列的标识6.2 删除不相关的列6.3 编码分类变量6.4 电动…

【机器学习之---数学】统计学基础概念

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 统计学基础 1. 频率派 频率学派(传统学派)认为样本信息来自总体,通过对样本信息的研究可以合理地推断和估计总体信息…

探究 HTTPS 的工作过程

目录 1. HTTPS 协议原理 1.1. 为什么要有HTTPS协议 1.2. 如何理解安全 1.3. HTTPS 协议是什么 2. HTTPS 的前置概念 2.1. 什么是加密 && 解密 2.2. 为什么要加密 2.3. 常见的加密方式 2.3.1. 对称加密 2.3.2. 非对称加密 2.4. 数据摘要 && 数据指纹…

Linux系统------------MySQL备份与恢复

目录 一、数据备份的重要性 二、数据库备份的分类 2.1从物理与逻辑的角度,备份可分为物理备份与逻辑备份 2.2从数据库的备份策略角度:备份可分为完全备份、差异备份、 增量备份 2.2.1完全备份 2.2.2差异备份 2.2.3增量备份 2.2.4备份方式比较 三…

白酒:生产过程的能耗分析与节能减排措施

在当今的绿色环保时代,节能减排已经成为各行各业关注的焦点。作为传统的白酒生产企业,云仓酒庄深知环境保护的重要性,并积极采取措施降低生产过程中的能耗,为可持续发展贡献力量。 在豪迈白酒的生产过程中,能耗主要来自…