spring相关概念
spring是分层的,JavaEE应用一站式的轻量级开源框架,以控制反转(IoC,Inserve of Control)和面相切面编程(AOP,Aspect Oriented Programming)为内核,提供了表现层Sping MVC,持久层Spring JDBC 以及业务管层事物管理等企业级应用技术。
2.spring的优点
1.低入侵,代码污染低
2.高度开放性,可以自主选择spring全部或者部分
3.可以对主流框架进行集成
4.DI机制降低了业务对象替换的复杂性(应用程序在运行时依赖IoC容器来动态注入对象所需的外部依赖)
5.使用IoC容器,将对象的之间的依赖关系交给Spring,降低了组件之间的耦合性,更能专注于应用逻辑
3.springIoC的理解
1.什么是IoC
IoC,Inversion of Control,控制反转,指将对象的控制权转移给Spring框架,由 Spring 来负责控制对象的生命周期(比如创建、销毁)和对象间的依赖关系。在IOC中,所有的对象都被 Spring 控制,控制对象生命周期的不再是引用它的对象,而是Spring容器,由 Spring 容器帮我们创建、查找及注入依赖对象,而引用对象只是被动的接受依赖对象。
2.什么是DI
面向切面编程
用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命名为“切面”(Aspect),减少系统中的重复代码,降低了模块间的耦合度,提高系统的可维护性。
预编译,运行期间动态代理的对程序功能进行统一维护的技术,是OOP的扩展和补充。
OOP,允许开发者定义纵向关系,但不适用于定义横向关系,,会导致大量代码重复,不利于各个模块的复用。
1.横切关注点
分布于应用多处的功能(代码)
2.AOP主要功能
日志记录,事务处理,性能统计,安全处理,异常处理
3.机制
AOP通过横向抽取机制为这类无法通过纵向继承体系(OOP的方式)进行抽象的重复性代码提供了解决方案。
4.其他AOP框架
1.AspectJ:语言级的AOP实现,扩展了java语言,定义了AOP语法,能够在编译器提供横切代码的织入,通过专门的编译器生产class文件。
2.AspectWerkz:基于Java的简单,动态,轻量级的AOP框架,支持运行期或类装载期织入横切代码,它需要特殊的类装载器。
3.JBoss AOP:Jboss应用程序服务器框架的扩展功能。
5.AOP术语
1.连接点
指程序运行过程中所执行的方法
将横切关注点的代码放回的地方
如类开始初始化前,类初始化后。类某个方法调用前,调用后,方法抛出异常后
spring AOP仅支持方法的连接点
2.切点
AOP定位连接点的方式
每个类一般有多个连接点(一般一个方法就是一个连接点)
一个切点可以匹配多个连接点
3.增强(通知)(Advice)
织入到连接点上的一段代码
还拥有执行点的方位
结合方位信息和切点,AOP就可以找到特定的连接点
4.引介
一种特殊的增强,为类添加一些属性和方法
5.目标对象
增强的织入目标类
6.织入(Waving)
将增强添加到目标类具体连接点的过程
编译器织入
类装载期织入
AOP采用动态代理织入:在运行期为目标类添加增强生成子类的方式
7.切面(Aspect)
切点+增强(引介)
包括了横切逻辑的定义,也包括了连接点的定义
6.关系图
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律