Spring的一些知识点

news2024/9/28 23:37:29
  1. 什么是Spring?

Spring是一种轻量级的开发框架,旨在提高开发人员的开发效率以及系统的可维护性。
Spring的核心模块
在这里插入图片描述
Spring Core是基础模块,可以说Spring的其他功能都要依赖于该类库,主要提供IOC的依赖注入功能;
Spring Aspects:该模块为与Aspects的集成提供支出;
Spring Aop: 提供了面向切面的编程实现;
Spring JDBC:为Java的数据库连接模块;
Spring JMS:Java消息服务;
Spring ORM:用于支持ORM工具;
Spring Web:为创建Web应用提供支持;
Spring Tests:提供Junit和TestNG测试的支持。

  1. 什么是Spring的IOC?

IOC(控制反转)是一种设计思想,就是将原本在应用程序中创建对象的控制权交由Spring的管理。IOC容器是Spring用来实现控制反转的载体,IOC容器实际上就是一个Map,Map中存放了各种对象。
将对象之间的相互依赖交由Spring去管理,并由IOC容器完成对象的注入,这样可以很大程度上简化应用的开发。

  1. 什么是Spring的AOP?

AOP(面向切面编程)能够将那些与业务无关,却为业务模块所共有的逻辑或责任(比如事务管理、日志管理、权限控制)封装起来,便于减少重复代码,降低模块间的耦合度,并利于将来的可扩展性和可维护性。

  1. Spring 中的 bean 的作⽤域有哪些?
  • Singleton (单例):唯一的bean实例,Spring中的bean默认都是单例的;
  • Prototype: 每次请求都是创建一个新的bean实例;
  • Request: 每次http请求都会产生一个bean,该bean在当前http request内有效;
  • Session: 每次http请求都会产生一个bean,该bean在当前http Session内有效;
  • Global-session: 全局session作用域,仅仅在基于protlet的web应用中才有意义,Spring5已经没有了。
  1. Spring 的事务传播机制?
  • required: 如果当前存在事务,则加入该事务;如果不存在事务,就新开启一个事务,默认的事务传播机制。
  • supports: 如果当前存在事务,则加入该事务;如果不存在事务,就以非事务的方式运行。
  • mandatory: 如果当前存在事务,则加入该事务;如果不存在事务,则抛出异常。
  • required_new: 创建一个新的事物,如果当前存在事务,就把当前事物挂起。
  • not_supports: 以非事务方式运行,如果当前存在事务,则把当前事务挂起。
  • never: 以非事务方式运行,如果当前存在事务,则抛出异常。
  • nested: 如果当前存在事务,则创建⼀个事务,作为当前事务的嵌套事务来运⾏;如果当前没有事务,则该取值等价于required.
  1. Spring中bean的生命周期?
    1. 解析类得到BeanDefinition;
    2. 如果类有多个构造方法,推断类的构造方法;
    3. 确定构造方法,进行实例化得到一个对象;
    4. 对于对象中的属性进行依赖注入;
    5. 回掉Aware方法;
    6. 执行BeanPostProcesses的前置化方法;
    7. 调用初始化方法;
    8. 执行BeanPostProcesses的后置化方法;在这里进行AOP
    9. 如果当前Bean是单例的,则放入单例Map池中;
    10. 使用Bean;
    11. Spring容器关闭时候调用DisposableBean的destroy()方法;

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

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

相关文章

动手学深度学习v2—01数据操作+数据预处理

此次用到的虚拟环境:pytorchmwy项目名称:limuAI所需框架和工具:pytorch,pandas一、创建CSV文件所需工具:pandas在与项目同等目录下创建一个文件夹名为data,其中文件名称为house_tiny.csv。代码如下&#xf…

Java基础:拼图小游戏

涉及到的知识: 1.图形用户接口GUI(Graphical User Interface)用图形化的方式显示操作界面 两个体系: AWT包和Swing包 2.界面会用到JFrame类 3.界面中的菜单会用到JMenuBar, JMenu, JMenuItem 4.添加图片 在设置完JLabel的location之后还需要获得展示内容的窗体, 通过setLay…

吃鸡用什么蓝牙耳机效果好?手游吃鸡公认最好的几款蓝牙耳机

蓝牙耳机的作用很多,几乎每个人都需要一副很棒的耳机在通勤或锻炼途中使用,并且玩游戏也少不了它,手游近几年十分的流行,下面整理了几款性能不错的蓝牙耳机。 第一款:南卡小音舱蓝牙耳机 蓝牙版本:5.3 发…

【Linux】如何将ntfs硬盘挂载到home目录下并具有读写权限

步骤1. 查看当前挂载的硬盘及其挂载点2. 查看需要挂载到home下的磁盘类型信息3. 在home下新建一个空的文件夹作为该磁盘的新挂载点4. 以ntfs类型的硬盘为例,使用mount命令进行挂载5. 问题1:进程占用了磁盘6. 问题2:磁盘权限为只读的7. 永久挂…

[AI助力] 2022.2.23 考研英语学习 2010 英语二翻译

[AI助力] 2022.2.23 考研英语学习 2010 英语二翻译 文章目录[AI助力] 2022.2.23 考研英语学习 2010 英语二翻译2010年英语二翻译真题自己写的积累🧐看看AI的翻译,学习学习(把自己当成阅卷老师来康康hhh🤠DeepL谷歌翻译ReadPaper里…

JavaUDP通信程序

2 UDP通信程序 2.1 UDP通信原理 UDP协议是一种不可靠的网络协议,它在通信的两端各建立一个Socket对象, 但是这两个Socket只是发送,接收数据的对象因此对于基于UDP协议的通信双方而言,没有所谓的客户端和服务器的概念 Java提供了DatagramSocket类作为基…

低代码选型,论协同开发的重要性

Git是一款用于分布式版本控制的免费开源软件: 它可以跟踪到所有文件集中任意的变更,通常用于在软件开发期间,协调配合程序员之间的代码程序开发工作。 Git 最初诞生的原因源于Linux 内核的开发,2005年Linus Torvalds 编写出了Git。其他内核开…

AI作画—中国画之山水画

山水画,简称“山水”,中国画的一种,描写山川自然景色为主体的绘画。山水画在我国绘画史中占有重要的地位。 山水画形成于魏晋南北朝时期,但尚未从人物画中完全分离。隋唐时始终独立,五代、北宋时趋于成熟,…

Solon2 之基础:四、应用启动过程与完整生命周期

串行的处理过程(含六个事件扩展点 两个函数扩展点),代码直接、没有什么模式。易明 提醒: 启动过程完成后,项目才能正常运行(启动过程中,不能把线程卡死了)AppBeanLoadEndEvent 之前…

【C++】类和对象(完结篇)

文章目录1. 再谈构造函数1.1 初始化列表1.2 explicit关键字2. static 成员2.1 静态成员变量2.1 静态成员函数2.3 练习2.4 总结3. 匿名对象4. 友元4.1 友元函数4.2 友元类5. 内部类6. 拷贝对象时编译器的一些优化7. 再次理解类和对象这篇文章呢,我们来再来对类和对象…

TypeScript学习笔记(一)编译环境、数据类型、函数类型、联合类型

文章目录编译环境基本类型函数类型函数重载联合类型和函数重载编译环境 TypeScript最终会被编译成JavaScript来运行,所以我们需要搭建对应的环境。 首先我们要全局安装typescript # 安装命令 npm install typescript -g # 查看版本 tsc --version⭐️ 方式一&…

【2023-2-23】FastDeploy 安装教程

【2023-2-22】FastDeploy 安装编译教程 该测试 FastDeploy CPU版本。 1. fastDeploy库编译 1.1 官方预编译库下载 预编译库下载安装 1.2 自定义CPU版本库编译 官方编译FastDeploy教程 CMakeGUI VS 2019 IDE编译FastDeploy 本人编译教程 CMAKE_CONFIGURATION_TYPES 属性设…

(三十一)大白话MySQL如果事务执行到一半要回滚怎么办?再探undo log回滚日志原理

之前我们已经给大家深入讲解了在执行增删改操作时候的redo log的重做日志原理,其实说白了,就是你对buffer pool里的缓存页执行增删改操作的时候,必须要写对应的redo log记录下来你做了哪些修改 如下图所示: 这样万一要是你提交事…

渗透测试之DNS域名信息探测实验

渗透测试之DNS域名信息探测实验实验目的一、实验原理1.1 域名1.2 .域名的构成1.3 域名的基本类型1.4 域名级别二、实验环境2.1 操作机器三、实验步骤1. 使用sp查询域名信息2. 进行探测实验实验目的 掌握使用nslookup进行DNS域名信息探测的原理和方式了解子域名查询网站 一、实…

PCB封装孔小,元器件无法插入,如何解决?

DIP就是插件,采用这种封装方式的芯片有两排引脚,可以直接焊在有DIP结构的芯片插座上或焊在有相同焊孔数的焊位中。其特点是可以很方便地实现PCB板的穿孔焊接,和主板有很好的兼容性。但是由于其封装面积和厚度都比较大,而且引脚在插…

Allegro如何打开格点显示效果操作指导

Allegro如何打开格点显示效果操作指导 Allegro可以设置格点显示效果,以格点来判定走线等等是否都处于格点上,如下图 如何打开格点显示效果,具体操作如下 点击Setup点击Grids

KUKA机器人_基础编程中的变量和协定

KUKA机器人_基础编程中的变量和协定 KUKA机器人KRL中的数据保存:  每个变量都在计算机的存储器中有一个专门指定的地址  一个变量用非KUKA关键词的名称来表示  每个变量都属于一个专门的数据类型  在应用前必须声明变量的数据类型  在KRL中有局部变量和全局变量之分…

winapi获取和修改camera raw界面元素数据

camera raw 界面如下: 需求就是根据 windows api 来操作界面右边的色温、色调、曝光等属性,进而对图片进行调色。根据 spy 捕获的窗口信息,理论上是可以拿到并修改值的。 根据 class 可以先拿到窗口句柄: #define CAMERA_RAW_CLA…

2022年工程机械出口专题研究【重工】

文章目录2022年工程机械出口专题研究1、中国是全球工程机械第一大市场,竞争力逐步提升2、工程机械出口高增,市场分布趋于多元,企业营收获益3、海外市场高速增长原因为何?4、海外市场增长动能预测附件:2022年工程机械出…

拖拽删除元素、拖拽排序、拖拽预览图片和拖拽移动元素

介绍 HTML5 提供了专门的拖拽与拖放的 API,目前各浏览器都已支持,包括 IE。HTML 拖放(Drag and Drop)接口使应用程序能够在浏览器中使用拖放功能。例如,用户可使用鼠标选择可拖拽(draggable)元素…