Spring IOC 和 AOP的学习笔记
Spring框架是java开发行业的标准
Spring全家桶
Web:Spring Web MVC/Spring MVC、Spring Web Flux
持久层:Spring Data / Spring Data JPA 、Spring Data Redis 、Spring Data MongoDB
安全校验:Spring Security
构建工程脚手架:Spring Boot
微服务:Spring Cloud
IOC是Spring全家桶各个功能模块的基础,创建对象的容器。
AOP也是以IOC为基础,AOP是面向切面编程,抽象化的面向对象
1:打印日志
2:事务
3:权限控制
1:IOC
控制反转,将对象的创建进行反转,常规情况下,对象都是开发者手动创建的,使用 loC开发者不再需要创建对象,而是由loC容器根据需求自动创建项目所需要的对象。
不用ioc:所有对象开发者自己创建
使用ioc:对象不用开发者创建,而是交给 Spring 框架来完成
1.pom.xml
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.15</version>
</dependency>
1.1:怎么使用:基于xml和基于注解
1.1.1:基于 XML:开发者把需要的对象在 XML 中进行配置,Spring 框架读取这个配置文件,根据配置文件的内容来创建对象
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"><!-- 配置 User 对象 --><bean class="com.southwind.entity.User" id="user"><property name="id" value="1"></property><property name="name" value="张三"></property></bean></beans>
package com.southwind.test;import com.southwind.entity.User;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class Test {public static void main(String[] args) {//加载Spring IoC,读取 XML 文件ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");System.out.println(applicationContext.getBean("user"));System.out.println(applicationContext.getBean(User.class));}
}
1.1.2:基于 注解
1:配置类
2:扫包+注解
更简单的方式,不再需要依赖于 XML 或者配置类,而是直接将 bean 的创建交给目标类,在目标类添加注解来创建
ioc自动创建对象,完成依赖注入
@Autowired 通过类型进行注入,如果需要通过名称取值,通过 @Quglifier 注解完成名称的映射
2:AOP
面向切面编程,是一种抽象化的面向对象编程,对面向对象编程的一种补充
打印日志
业务代码和打印日志耦合起来
计算器方法中,日志和业务混合在一起,AOP要做的就是将日志代码全部抽象出去统一进行处理,计算器方法中只保留核心的业务代码。
做到核心业务和非业务代码的解耦合
对于 IoC 的一种补充,面向切面编程,简化程序的一种方式
IoC 简化代码量,AOP 实现解耦合的
让代码变得松散,灵活,更方便扩展和维护
日志输出和业务计算混合在一起,耦合在一起,不方便维护
解耦合,把日志输出和业务计算的代码进行分离
最终程序运行的时候,结果还要合到一起
相关文章:
Spring IOC 和 AOP的学习笔记
Spring框架是java开发行业的标准 Spring全家桶 Web:Spring Web MVC/Spring MVC、Spring Web Flux 持久层:Spring Data / Spring Data JPA 、Spring Data Redis 、Spring Data MongoDB 安全校验:Spring Security 构建工程脚手架ÿ…...
二七(vue2-03)、生命周期四个阶段及八个钩子、工程化开发和脚手架、组件注册、拆分组件
1. 生命周期 1.1 生命周期四个阶段 <!-- Vue生命周期:一个Vue实例从 创建 到 销毁 的整个过程。生命周期四个阶段:① 创建 ② 挂载 ③ 更新 ④ 销毁1.创建阶段:创建响应式数据2.挂载阶段:渲染模板3.更新阶段:修改…...
[树] 最轻的天平
问题描述 天平的两边有时不一定只能挂物品,还可以继续挂着另一个天平,现在给你一些天平的情况和他们之间的连接关系,要求使得所有天平都能平衡所需物品的总重量最轻。 一个天平平衡当且仅当“左端点的重量 \times 左端点到支点的距离 …...
Linux udev介绍使用
udev udev配置文件匹配键和赋值键操作符解释示例修改udev配置U盘自动挂载Usb卸载SD卡挂载SD卡卸载 udev配置文件 /etc/udev/udev.conf 这个文件通常很短,他可能只是包含几行#开头的注释,然后有几行选项: udev_root“/dev/” udev_rules“/…...
单片机:实现节日彩灯(附带源码)
本项目的目标是通过编程实现几个常见的彩灯效果,包括: 流水灯效果(从左到右或从右到左)闪烁效果(所有灯同时闪烁)渐变效果(灯光从亮到灭,再从灭到亮)定时切换颜色效果&a…...
流程引擎Activiti性能优化方案
流程引擎Activiti性能优化方案 Activiti工作流引擎架构概述 Activiti工作流引擎架构大致分为6层。从上到下依次为工作流引擎层、部署层、业务接口层、命令拦截层、命令层和行为层。 基于关系型数据库层面优化 MySQL建表语句优化 Activiti在MySQL中创建默认字符集为utf8&…...
【爬虫一】python爬虫基础合集一
【爬虫一】python爬虫基础合集一 1. 网络请求了解1.1. 请求的类型1.2. 网络请求协议1.3. 网络请求过程简单图解1.4. 网络请求Headers(其中的关键字释义):请求头、响应头 2. 网络爬虫的基本工作节点2.1. 了解简单网络请求获取响应数据的过程所涉及要点 1. 网络请求了…...
any/all 子查询优化规则的原理与解析 | OceanBase查询优化
背景 在通常情况下,当遇到包含any/all子查询的语句时,往往需要遵循嵌套执行的方式,因此其查询效率较低。Oceanbase中制定了相应的any/all子查询优化规则,能够能够识别并优化符合条件的any/all子查询,从而有效提升查询…...
ECharts 饼图:数据可视化的重要工具
ECharts 饼图:数据可视化的重要工具 引言 在数据分析和可视化的领域,ECharts 是一个广受欢迎的开源库。它由百度团队开发,用于在网页中创建交互式图表。ECharts 提供了多种图表类型,包括柱状图、折线图、散点图等,而饼图则是其中最常用的一种。本文将深入探讨 ECharts 饼…...
第10章:CSS最佳实践 --[CSS零基础入门]
代码组织 在CSS开发中,良好的代码组织和最佳实践对于项目的可维护性和扩展性至关重要。以下是两个示例,展示了如何遵循CSS最佳实践来组织代码。 示例 1: 使用 BEM(Block Element Modifier)命名法 BEM 是一种用于提高 CSS 可读性…...
怎么在idea中创建springboot项目
最近想系统学习下springboot,尝试一下全栈路线 从零开始,下面将叙述下如何创建项目 环境 首先确保自己环境没问题 jdkMavenidea 创建springboot项目 1.打开idea,选择file->New->Project 2.选择Spring Initializr->设置JDK->…...
递归读取指定目录下的文件
序言 需要读取sftp服务器上符合指定的文件名正则的文件列表,目前想到的最好的办法就是递归。 我这里引入的依赖是: <!-- jsch-sftp连接 --><dependency><groupId>com.jcraft</groupId><artifactId>jsch</artif…...
【模型压缩】原理及实例
在移动智能终端品类越发多样的时代,为了让模型可以顺利部署在算力和存储空间都受限的移动终端,对模型进行压缩尤为重要。模型压缩(model compression)可以降低神经网络参数量,减少延迟时间,从而实现提高神经…...
常用的JVM启动参数有哪些?
大家好,我是锋哥。今天分享关于【常用的JVM启动参数有哪些?】面试题。希望对大家有帮助; 常用的JVM启动参数有哪些? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 JVM(Java Virtual Machine)启…...
Curvelet 变换与FDCT
Curvelet变换 Curvelet变换 是一种多尺度、多方向的信号分析工具,专门用于处理具有各向异性特征的信号,例如边缘和曲线。与传统的傅里叶变换和小波变换相比,Curvelet变换能够更精确地表示信号中的曲线特征,因此在图像处理、地震数据分析、医学成像等领域得到了广泛应用。 …...
Django Admin 管理工具
Django 提供了基于 web 的管理工具。 Django 自动管理工具是 django.contrib 的一部分。你可以在项目的 settings.py 中的 INSTALLED_APPS 看到它: /HelloWorld/HelloWorld/settings.py 文件代码: INSTALLED_APPS ( django.contrib.admin, django.co…...
Android笔记【19】
具体示例 run: val result someObject.run {// 这里可以使用 thisthis.someMethod() }let: val result someObject?.let {// 这里使用 itit.someMethod() }with: val result with(someObject) {// 这里使用 thissomeMethod() }apply: val obj SomeClass().apply {// 这里使…...
矩阵在资产收益(Asset Returns)中的应用:以资产回报矩阵为例(中英双语)
本文中的例子来源于: 这本书,网址为:https://web.stanford.edu/~boyd/vmls/ 矩阵在资产收益(Asset Returns)中的应用:以资产回报矩阵为例 在量化金融中,矩阵作为一种重要的数学工具,被广泛用于描述和分析…...
Docker 中如何限制CPU和内存的使用 ?
在容器化的动态世界中,Docker 已经成为构建、部署和管理容器化的关键工具应用。然而,Docker 的效率在很大程度上取决于资源管理得有多好。设置适当的内存和 CPU 限制对于优化 Docker 性能至关重要,确保每个容器在不使主机负担过重的情况下获得…...
【AIGC-ChatGPT进阶提示词-《动图生成》】怪物工厂:融合想象力与创造力的奇幻世界
引言 在这个科技飞速发展的时代,人工智能正在不断突破我们的想象。而在众多AI应用中,有一个独特的创意工具正在悄然兴起,它就是"怪物工厂"。这个神奇的工具能够将人类天马行空的想象力与AI的创造力完美结合,打造出一个个奇异、有趣、甚至有些恐怖的怪物形象。本…...
League Akari:英雄联盟玩家的终极智能工具箱 - 3大核心功能深度解析
League Akari:英雄联盟玩家的终极智能工具箱 - 3大核心功能深度解析 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 还在为英雄联盟…...
基于Maxwell的750W内转子伺服电机设计:14极12槽优化方案解析
基于maxwwell设计的经典750W,3000RPM 内转子 私服电机,14极12槽,外径76 轴向长度56.7 ,转矩1Nm,直流母线12V,辅助槽优化了齿槽转矩,特色是转子加工方便,永磁同步电机(PMSM BLDC&…...
智慧卤味,一码追溯:万界星空MES方案
一、行业痛点与MES目标1、主要痛点生产依赖经验:卤制时间、温度、配料比例依赖人工经验,产品口味和质量不稳定。追溯困难:一旦出现食品安全问题,难以快速精准追溯到问题源头(原料批次、生产环节、操作人员等࿰…...
效率提升秘籍:使用快马AI一键生成动漫视频批量处理与格式转换工具
效率提升秘籍:使用快马AI一键生成动漫视频批量处理与格式转换工具 最近接手了一个动漫视频处理的项目,需要将大量不同格式的动漫视频统一转换为高清MP4格式,并生成预览缩略图。手动处理不仅耗时耗力,还容易出错。于是我开始寻找自…...
从原理到代码:用Python实现简易变焦跟踪算法(OpenCV实战)
从原理到代码:用Python实现简易变焦跟踪算法(OpenCV实战) 在计算机视觉领域,变焦跟踪是一个既基础又关键的技术难题。想象一下,当你用手机拍摄远处景物时,镜头从广角切换到长焦的过程中,画面往往…...
从SolidWorks到ROS:六自由度机械臂URDF模型转换实战指南
1. 从SolidWorks到ROS的桥梁:URDF模型转换概述 当你费尽心思在SolidWorks中完成了六自由度机械臂的三维建模,看着那些精密的齿轮和连杆在软件中流畅转动时,脑海中可能已经浮现出它在ROS环境中大展身手的场景。但问题来了:如何让这…...
CRT库链接冲突详解:为什么你的Visual Studio项目会警告LNK4098(含/NODEFAULTLIB使用指南)
CRT库链接冲突深度解析:从原理到实战解决LNK4098警告 当你用Visual Studio编译C项目时,突然蹦出"warning LNK4098: 默认库msvcrtd.lib与其他库的使用冲突"的提示,这就像开车时仪表盘突然亮起的警告灯——它不会立即让引擎熄火&…...
springboot+vue基于web的高校学生宿舍报修系统
目录同行可拿货,招校园代理 ,本人源头供货商高校学生宿舍报修系统功能分析(SpringBootVue)系统角色划分核心功能模块学生端功能维修端功能管理端功能系统管理功能技术实现要点扩展功能建议数据安全考虑项目技术支持源码获取详细视频演示 :文章…...
零成本玩转千问大模型!OpenClaw 配置秘籍(附每日500 Token福利)
🚀零成本玩转千问大模型!OpenClaw 配置秘籍(附每日500 Token福利) 这份教程将带你完成从环境准备到成功验证的全过程,让你手中的工具“活”起来。 前期准备:搭建基石 在开始代码操作之前,我们需…...
AI运维管理与安全防护设备功率MOSFET选型方案——高效、可靠与智能驱动系统设计指南
随着智能化运维与主动安全防护需求的爆发式增长,AI边缘计算节点、智能传感器与安全执行单元已成为现代基础设施管理的核心。其电源管理与信号驱动系统作为设备可靠运行与实时响应的基石,直接决定了系统的能效、稳定性及防护等级。功率MOSFET作为该系统中…...
