Spring IOC 和 AOP的学习笔记

ops/2024/12/20 13:20:19/

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 实现解耦合的

让代码变得松散,灵活,更方便扩展和维护

日志输出和业务计算混合在一起,耦合在一起,不方便维护

解耦合,把日志输出和业务计算的代码进行分离

最终程序运行的时候,结果还要合到一起


http://www.ppmy.cn/ops/143498.html

相关文章

如何实现《黑神话:悟空》人物换脸?ToDesk云电脑AIGC版实操教程

《黑神话&#xff1a;悟空》作为2024年下半年颇为流行的一款游戏&#xff0c;热度很高&#xff0c;广受国内外玩家欢迎。作为首款国产3A游戏&#xff0c;它不仅在电竞爱好者圈子中受到追捧&#xff0c;亦是可以说是在年轻群体中基本到了无人不知、无人不晓的程度&#xff01; …

folly库高性能futex源码探究

Futex(快速用户空间互斥量)是一个32位的无符号整型原子变量,它允许对该值执行futex()系统调用。它以模板化的方式设计,使其能够与确定性调度测试(DeterministicSchedule)正确交互。 h源码: enum class FutexResult {VALUE_CHANGED, /* futex value didnt match expect…

电子应用设计方案-61:智能沙发系统方案设计

智能沙发系统方案设计 一、引言 智能沙发作为现代家居的创新产品&#xff0c;旨在为用户提供更加舒适、便捷和个性化的体验。本方案将详细介绍智能沙发系统的设计理念、功能特点、技术实现以及系统架构。 二、系统概述 1. 系统目标 - 提供多种舒适的坐姿和躺姿调节&#xff0c…

C# OpenCV机器视觉:图像旋转(让生活的角度更美好!)

在一个阳光明媚的下午&#xff0c;阿强坐在公园的长椅上&#xff0c;享受着温暖的阳光和微风。他的手里拿着一本书&#xff0c;书中的故事让他沉浸在一个奇幻的世界里。突然&#xff0c;他的手机响了&#xff0c;是他的朋友发来的信息&#xff1a;“快来看看我拍的照片&#xf…

【iOS】OC语法知识小结

文章目录 前言inWithCustomView:视图弹出方法修改UITextField的占位符文本颜色视图变换的动态效果导航栏的阴影效果导航栏阴影效果管理和自定义阴影效果 reloadDatareloadData 方法的使用reloadData 的工作原理高效使用 reloadData 键盘的不同属性类型总结 前言 在之前写项目和…

深入了解京东API接口:如何高效获取商品详情与SKU信息

在当今数字化时代&#xff0c;电商平台的数据接口成为了连接商家与消费者的桥梁。京东作为国内领先的电商平台&#xff0c;其API接口为开发者提供了丰富的商品信息获取途径。本文将深入探讨如何使用京东API接口高效获取商品详情与SKU信息&#xff0c;并附上简短而实用的代码示例…

电脑经常出现“msvcp110.dll文件丢失”的情况是什么原因“msvcp110.dll文件丢失”的解决方法

电脑经常出现“msvcp110.dll文件丢失”的情况&#xff0c;究竟是什么原因&#xff1f;以及&#xff0c;我们该如何解决&#xff1f; 在软件开发和日常使用电脑的过程中&#xff0c;不少朋友可能会遇到一些令人头疼的系统报错或文件丢失问题&#xff0c;比如“msvcp110.dll文件…

重生之我在异世界学编程之C语言:深入预处理篇(下)

大家好&#xff0c;这里是小编的博客频道 小编的博客&#xff1a;就爱学编程 很高兴在CSDN这个大家庭与大家相识&#xff0c;希望能在这里与大家共同进步&#xff0c;共同收获更好的自己&#xff01;&#xff01;&#xff01; 本文目录 引言正文一 条件编译&#xff08;1&#…