当前位置: 首页 > news >正文

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

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

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

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

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

http://www.lryc.cn/news/506259.html

相关文章:

  • 二七(vue2-03)、生命周期四个阶段及八个钩子、工程化开发和脚手架、组件注册、拆分组件
  • [树] 最轻的天平
  • Linux udev介绍使用
  • 单片机:实现节日彩灯(附带源码)
  • 流程引擎Activiti性能优化方案
  • 【爬虫一】python爬虫基础合集一
  • any/all 子查询优化规则的原理与解析 | OceanBase查询优化
  • ECharts 饼图:数据可视化的重要工具
  • 第10章:CSS最佳实践 --[CSS零基础入门]
  • 怎么在idea中创建springboot项目
  • 递归读取指定目录下的文件
  • 【模型压缩】原理及实例
  • 常用的JVM启动参数有哪些?
  • Curvelet 变换与FDCT
  • Django Admin 管理工具
  • Android笔记【19】
  • 矩阵在资产收益(Asset Returns)中的应用:以资产回报矩阵为例(中英双语)
  • Docker 中如何限制CPU和内存的使用 ?
  • 【AIGC-ChatGPT进阶提示词-《动图生成》】怪物工厂:融合想象力与创造力的奇幻世界
  • docker 使用 xz save 镜像
  • C#经典算法面试题
  • vulnhub靶场【DriftingBlues】之9 final
  • 有124个叶子节点的,完全二叉树最多有多少个节点
  • 从RNN到Transformer:生成式AI自回归模型的全面剖析
  • Java爬虫大冒险:如何征服1688商品搜索之巅
  • 基于Spring Boot的无可购物网站系统
  • 智能人家谱程序创意
  • Redis 7.x哨兵模式如何实现?基于Spring Boot 3.x版
  • 解决QTCreator在Debug时无法显示std::string类型的问题
  • leetcode 面试经典 150 题:无重复字符的最长子串