Spring核心机制Ioc和Aop

Spring全家桶
WEB:SpringMvc、Spring Web Flux
持久层:Spring Data、Spring Data Redis、Spring Data MongoDB
安全校验:spring Security
构建工程脚手架:SpringBoot
微服务:SpringCloud

所有的Spring框架集成,都是基于Ioc与Aop的,如果没有Ioc与Aop,不会存在Spring系列框架;

  • Ioc:Spring全家桶,各个功能模块的基础,创建对象的容器
  • Aop:面向切面编程,抽象化的面向对象,基于Ioc实现的;将不影响业务的很多方法相似的位置的公共代码提取出来进行封装使用;业务实现:1、打印日志 2、事务 3 、权限处理
    1.IOC
    Ioc:控制反转,将对象的创建进行翻转,通常情况下,对象都是开发者手动创建,使用Ioc开发者不再需要创建对象,而是由Ioc容器根据需求自动创建项目所需要的对象
    创建spring工程步骤:
    1.pom.xml中引入spring的依赖:spring-context,该依赖中包含了spring-aop,spring-beans,spring-core等其他maven依赖,无需重复引入
    pom中添加spring依赖

lombok依赖:自动生成get/set方法,只需要在实体类前加@data注解即可,无需重复写get、set、toString、hashCode等方法
lombok引入注解

  • 不用Ioc容器创建对象:所有对象开发者自己创建,new 对象();这里思考一个问题,如果1个10个对象,那还可以实现手动创建,如果成百上千个对象呢,手动创建对象的效率大大降低;
    手动创建:
    手动创建对象

  • 使用Ioc:对象不用开发者创建,交给Spring框架完成
    两种方式创建:1.基于XML和基于注解(更多使用的是基于注解的方式进行对象的创建,springboot中已去掉呢基于xml的方式创建对象);
    详细介绍一下两种方式:
    1.基于xml的方式:开发者需要把对象在xml中进行配置,Spring框架读取这个配置文件,跟据配置文件的内容来创建对象,通过类反射获取对象
    xml文件
    因为没有对变量实例化赋值,所以运行时,值为null
    在这里插入图片描述
    在配置文件中,通过property标签对变量赋值,之后运行就有值了
    property赋值
    2.基于注解方式
    1>通过配置类
    用一个Java类来替代XML文件,把在xml中的配置放到配置类中;
    配置类注解:@Configuration
    通过@Bean注解,让spring去调用
    配置类
    通过加载注解获取bean内容
    contex.getBean默认获取的是注解类的方法名
    注解类中也可以自定义方法名:@Bean(value = “config”)
    2>扫包+注解
    扫包:
    配置类很多的时候,可以使用扫描配置类的包名的方式,加载所有的配置类
    扫包加载配置类
    更简单的方式,不再需要依赖于XML或者配置类,而是将bean的创建交给目标类,在目标类添加注解来创建
    @Component注解,将实体类加载到IOC容器中,进行读取
    @Component注解实现实体类注入ioc容器
    在目标类的变量上方添加@Value注解,实现值的注入
    在这里插入图片描述
    IOC自动创建对象,同时能完成依赖注入
    @Autowired:自动装载;将a实体的属性加载到b属性中
    在这里插入图片描述
    @Autowired默认通过byType方式注入
    使用@Qualifier实现通过byName方式注入
    在这里插入图片描述
    AOP:面向切面编程
    一种抽象化的面向对象编程,面向对象编程的补充,即将公共的代码抽象出去,同一进行处理;做到核心业务与非核心业务的解藕合
    引用切面依赖:
    aspect注解依赖
    1.创建切面类,通过JoinPoint连接获取:joinPoint连接切面方法与参数
    joinPoint.getSignature().getName():获取名称
    joinPoint.getArgs():获取参数
    @Aspect注解:切面对象注入注解
    @Before在对象执行之前先执行切面对象内容
    @AfterReturning在执行业务代码之后执行切面类,可以获取到返回值
    @After注解在执行业务代码吗之后执行切面类,
    @AfterThrowing:在方法异常返回后
    @Around:对方法进行包裹切面注解执行2.创建实现类,实现类添加@Component注解
    在这里插入图片描述

3.spring.xml中配置自动扫包即开启自动生成代理

<1--自动扫包--> 
<context: component-scan base-package="com. southwind. aop">
</context: component-scan>
<!--开启自动生成代理-->
<aop: aspecti-autoproxy></aop: aspecti-autoproxy>

4.使用
切面对象只能跟一个实现类生成代理对象,一对一的关系,如果有多个实现类则会
测试类功能实现

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

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

相关文章

轻松入门Linux—CentOS,直接拿捏 —/— <1>

一、什么是Linux Linux是一个开源的操作系统&#xff0c;目前是市面上占有率极高的服务器操作系统&#xff0c;目前其分支有很多。是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统 Linux能运行主要的UNIX工具软件、应用程序和网络协议 Linux支持 32…

每日OJ_牛客CM26 二进制插入

目录 牛客CM26 二进制插入 解析代码 牛客CM26 二进制插入 二进制插入_牛客题霸_牛客网 解析代码 m:1024&#xff1a;100000000 00 n:19 &#xff1a; 10011 要把n的二进制值插入m的第j位到第i位&#xff0c;只需要把n先左移j位&#xff0c;然后再进行或运算&#xff08;|&am…

ctfshow 权限维持 web670--web679

web670 <?php// 题目说明&#xff1a; // 想办法维持权限&#xff0c;确定无误后提交check&#xff0c;通过check后&#xff0c;才会生成flag&#xff0c;此前flag不存在error_reporting(0); highlight_file(__FILE__);$a$_GET[action];switch($a){case cmd:eval($_POST[c…

OCC BRepOffsetAPI_ThruSections使用

目录 一、BRepOffsetAPI_ThruSections简介 二、功能与特点 三、应用场景 四、示例 一、BRepOffsetAPI_ThruSections简介 在Open CASCADE Technology (OCCT) 中,BRepOffsetAPI_ThruSections 类是用来通过放样生成一个实体或者一个面壳(Shell)。当使用这个类时,isSolid 参…

【环境搭建问题】linux服务器安装conda并创建虚拟环境

1.检查有没有conda 首先看root文件夹下有没有anaconda或者conda 没有的话就要先下载安装conda&#xff1a; https://repo.anaconda.com/archive/index.html 在这个链接下找自己需要的。服务器一般为linux&#xff0c;所以我这里选择的是&#xff1a; 2.安装conda 下载安装…

Electron学习笔记(二)Hello World

目录 前言 运行主进程 创建界面 使用窗口打开界面 管理窗口的生命周期 关闭所有窗口时退出应用 (Windows & Linux)​ 如果没有窗口打开则打开一个窗口 (macOS) 使用预加载脚本访问渲染器的Node.js 添加你自己的功能 完整代码展示 效果展示 前言 接上一篇文章 …

LINUX进程间的通信(IPC)--信号

一、概念 信号通信&#xff0c;其实就是内核向用户空间进程发送信号&#xff0c;只有内核才能发信号&#xff0c;用户空间进程不能发送信号。信号已经是存在内核中的了&#xff0c;不需要用户自己创建。 信号通信的框架 * 信号的发送&#xff08;发送信号进程&#xff09;&am…

JS图形引擎汇总

1、leaferjs leaferjs绚丽多彩的 HTML5 Canvas 2D 图形渲染引擎&#xff0c;可结合 AI 绘图、生成界面。 提供了丰富的 UI 绘图元素&#xff0c;和开箱即用的功能&#xff0c;如自动布局、图形编辑、SVG 导出&#xff0c;方便与 Figma、Sketch 等产品进行数据交换。并为跨平台…

示波器选择导出至USB闪存盘的三种格式(bmp、set、csv)

如下图所示&#xff0c;一般由示波器导出至U盘中&#xff0c;一共有三种文件格式。 1、当前屏幕图像(*.bmp) BMP 文件格式&#xff08;全称是位图文件格式&#xff0c;Bitmap Image File&#xff09;是一种图像文件格式&#xff0c;用于存储数字图像。它是一种无损图像格式&am…

m3u8转MP4(网页视频下载)(超细教程, 有手就行)

准备工作 什么是m3u8文件 记事本打开m3u8文件&#xff1a; #EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:4 #EXT-X-MEDIA-SEQUENCE:0 #EXT-X-KEY:METHODAES-128,URI"https://xxxx/key.key" #EXTINF:3.336667, #EXTINF:1.668333, clvHz13123499.ts #EXTINF:2.03…

【uniapp离线打包】(基于Android studio)

文章目录 uniapp打包官方教程入口一、准备工作(工具三大件)二、准备工作&#xff08;Android壳和uniapp包&#xff09;导入Android壳生成uniapp包将uniapp包导入android壳 三、准备工作&#xff08;证书、&#xff09;准备Android平台离线签名证书 四、修改配置参数build.gradl…

AI为什么无法替代律师?

AI能否真正取代律师&#xff1f;一探究竟&#xff01; ©作者|LuMiQ 来源|神州问学 引言 数字化时代&#xff0c;AI技术正如催化剂般加速各行业的变革&#xff1a;在医疗界&#xff0c;它犹如医生的“第二双眼睛”&#xff0c;精准分析影像&#xff1b;制造业里&#xff…

ofcms代码审计

1 SSTI模板注入 1.1 通过阅读pom.xml,使用了freemaker开源组件 1.2 找到对应的模版新增页面,并注入payload,点击保存 最重要的是,找到模板注入请求的后端API 注入的命令为:<#assign value="freemarker.template.utility.Execute"?new()>${value("c…

WIFI 接收机和发射机同步问题+CFO/SFO频率偏移问题

Synchronization Between Sender and Receiver & CFO Correction 解决同步问题和频率偏移问题是下面论文的关键&#xff0c;接下来结合论文进行详细解读 解读论文&#xff1a;Verification and Redesign of OFDM Backscatter 论文pdf&#xff1a;https://www.usenix.org/s…

ChatGPT自学指南:宝藏参考书大盘点

ChatGPT是基于人工智能领域的自然语言处理技术&#xff0c;使用深度学习技术构建的一个大型语言模型。具体地说&#xff0c;ChatGPT是建立在OpenAI的GPT-4系列模型之上的&#xff0c;使用了大量的语言数据和预训练技术&#xff0c;可以生成高质量的文本&#xff0c;并且在准确度…

二叉树--堆(下卷)

二叉树–堆&#xff08;下卷&#xff09; 如果有还没看过上卷的&#xff0c;可以看这篇&#xff0c;链接如下&#xff1a; http://t.csdnimg.cn/HYhax 向上调整算法 堆的插⼊ 将新数据插⼊到数组的尾上&#xff0c;再进⾏向上调整算法&#xff0c;直到满⾜堆。 &#x1f4…

根据空域图信息构造飞机航线图以及飞行轨迹模拟matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 航路网络建模 4.2 航线图构建 4.3 飞行轨迹模拟的具体步骤 5.完整程序 1.程序功能描述 空域图是指航空领域中的一种图形表示方式&#xff0c;它涵盖了空中交通管理所需要的各种信息&a…

如何处理selenium Webdriver中的文本框?

文本框或字段在整个网页中广泛使用,本文将介绍如何在Java中使用Selenium Webdriver处理文本框。可以有各种文本字段,我们将尝试包括其中的大多数,并执行各种操作,如清除和输入文本。 我们将使用我们的Selenium游乐场网站- testkru,与各种文本框进行交互。您也可以使用同一…

藏文词典查单词,藏汉双语解释,推荐使用《藏语翻译通》App

《藏语翻译通》App推出了藏文词典、藏汉大词典、新术语等全新在线查单词功能。 藏汉互译 《藏语翻译通》App的核心功能之一是藏汉互译。用户只需输入中文或藏文&#xff0c;即可获得翻译结果。 藏文词典查单词 掌握一门语言&#xff0c;词汇是基础。《藏语翻译通》App内置藏…

诱骗IoT恶意软件跟踪CC服务器

工作背景 在分析 IoT 僵尸网络时&#xff0c;识别C&C 服务器至关重要。C&C 服务器的 IP 地址一直都是商业威胁情报的重要组成部分&#xff0c;由于 C&C 服务器通信协议日渐复杂并且活跃周期较短&#xff0c;时效性和准确性也非常重要。如果可以自动化识别 IoT 恶意…