初识Spring框架

Spring IOC

全称为Inversion of Control,即控制反转,意为把对资源的控制权反转过来,IOC不是一项开发技术,也不是具体功能,而是面向对象编程中的一种设计理念。

IOC的基本概念

  1. 定义
    • IOC即控制反转,是一种让服务消费者不直接依赖于服务提供者的组件设计方式,通过外部容器来控制组件之间的依赖关系,从而减少类与类之间的直接依赖。
  2. 原理
    • 在传统的程序设计中,组件之间的依赖关系是由组件自己控制的,即组件向外部请求所需的资源或依赖。而IOC则是将这种控制权反转,由外部容器(如Spring容器)来控制组件之间的依赖关系。
    • 容器会负责创建、配置和管理各个组件,并在需要的时候将它们注入到其他组件中。这样,组件只需要声明它们需要哪些依赖,而不需要关心这些依赖是如何被创建和注入的。
  3. 依赖注入(DI)
    • 依赖注入是IOC的一种实现方式,它是指将组件所需的依赖在运行时动态地注入到组件中。通过依赖注入,组件可以更加灵活地获取所需的依赖,而不需要自己创建或查找依赖。

Spring IOC的特点

  1. 松耦合:Spring IOC通过依赖注入的方式实现了组件之间的松耦合,即组件之间不需要直接依赖具体的实现类,只需要依赖接口或抽象类。这样,当某个组件的实现发生变化时,只需要修改相应的实现类,而不需要修改其他组件的代码。
  2. 灵活性:Spring IOC提供了多种依赖注入的方式,包括构造函数注入、Setter方法注入和注解注入等。这些注入方式使得开发者可以根据实际需求选择最适合的注入方式。
  3. 可扩展性:Spring IOC容器支持加载多个配置文件和多个上下文,使得应用程序可以更加灵活地扩展和配置。同时,Spring还提供了丰富的扩展点,如BeanPostProcessor、BeanFactoryPostProcessor等,允许开发者对容器进行自定义扩展。
  4. 易于测试:由于组件之间的依赖关系被解耦,因此可以轻松地模拟和替换依赖项,从而进行单元测试或集成测试。这使得测试过程更加简单和高效。
第一个Sping程序
实现步骤:

步骤1:下载依赖jar包,并引入项目中。

docs是Spring架构的相关文档,包括API文档、开发手册。

libs是Spring架构中各个模块的jar文件,每个模块均提供三项内容

Spring框架依赖jar包说明如下:

spring-core-5.2.2.RELEASE.jar:Spring框架核心jar包,是其他组件的基本核心,Spring框架的基本核心工具类

spring-beans-5.2.2.RELEASE.jar:包含Spring框架管理Bean和配置文件的基本功能

spring-context-5.2.2.RELEASE.jar:Spring框架核心包的扩展包,包含大量工具类

spring-expression-5.2.2.RELEASE.jar:Spring框架中一个强大的表达式解析语言,支持在运行时动态的解析表达式给对象赋值等功能

步骤2:编写Spring配置文件,在项目的classpath根路径下创建applicationContext.xml文件。为了便于管理框架的配置文件,也可以在项目中创建专门的Source Folder

在Spring配置文件中创建HelloSpring类的实例并为类中的hello属性注入属性值

beans标签中主要包含两部分内容,其中beans标签本身的一些属性如xmlns:xsl等,表示配置文件的一些约束

步骤3:编写测试代码通过Spring进行属性注入,在项目中添加测试方法。

Spring初始化运行环境的几种方式:

(1)除ClassPathXmLApplicationtext外,ApplicationContext

(2)除ApplicationContext及其实现类外,还可以通过BeanFactory接口及其实现类对Bean组件实施管理

Spring AOP

什么是AOP

AOP,全称为Aspect Oriented Programming,即面向切面编程,是一种编程范式,隶属于软件工程范畴。它通过预编译方式和运行期动态代理实现程序功能的统一维护,是OOP(面向对象编程)的延续和补充。AOP主要关注于基于OOP开发中的共性功能,通过横向切割OOP的纵向结构来增强程序的功能,从而提高代码的可重用性、降低业务逻辑各部分之间的耦合度,使业务代码更加简洁且易于维护。

AOP的基本概念
  • 切面(Aspect):切面是跨域应用程序多个点的关注点的模块化,如日志记录、事务管理等。切面利用AOP来封装横切关注点,使其与业务逻辑分离。
  • 连接点(Joinpoint):在程序执行过程中能够插入切面的点。这些点通常是方法的执行、异常的处理、字段的修改等。
  • 切入点(Pointcut):实际上被增强的方法,即被切面所增强的具体连接点。
  • 通知(Advice):在特定的连接点上执行的动作,也被称为增强。通知有多种类型,如前置通知、后置通知、环绕通知、异常通知和最终通知。
  • 目标对象(Target):被一个或多个切面所增强的对象。
  • 代理(Proxy):AOP框架创建的对象,用于实现切面功能的代理。

AOP的优势
  • 提高代码的可重用性:通过模块化横切关注点,使得这些关注点可以在多个地方重复使用。
  • 业务代码编码更简洁:将横切关注点与业务逻辑分离,使得业务代码更加专注于业务逻辑本身。
  • 业务代码维护更高效:当需要修改横切关注点时,只需修改切面代码,而无需修改大量业务代码。

AOP的底层实现

AOP的底层实现通常依赖于动态代理技术。根据被代理对象是否实现了接口,可以选择不同的动态代理方式:

  • JDK动态代理:如果被代理对象实现了接口,则可以使用JDK提供的动态代理技术。JDK动态代理通过java.lang.reflect.Proxy类和java.lang.reflect.InvocationHandler接口实现。
  • CGLIB动态代理:如果被代理对象没有实现接口,则可以使用CGLIB(Code Generation Library)库来生成代理类。CGLIB通过继承被代理类来创建代理对象,并在代理对象的方法中织入增强逻辑。

AOP在Spring框架中的应用

Spring框架提供了对AOP的广泛支持,包括基于AspectJ的注解式AOP和基于XML配置的AOP。在Spring中,可以通过@Aspect注解来定义一个切面,并通过@Before@After@Around等注解来定义不同类型的通知。Spring AOP的底层实现也是基于动态代理的,它会自动根据被代理对象是否实现了接口来选择使用JDK动态代理还是CGLIB动态代理。

综上所述,AOP是一种强大的编程范式,它通过横向切割OOP的纵向结构来增强程序的功能,提高代码的可重用性、降低业务逻辑各部分之间的耦合度,并使业务代码更加简洁且易于维护。在Spring框架中,AOP得到了广泛的应用和支持。

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值