欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring之重点知识 IOC(控制反转)和AOP(面向切面编程)学习小结

程序员文章站 2022-05-24 23:44:51
...

Spring优点:

1.Spring是一个开源,免费的框架
2.Spring是一个轻量级的,非入侵式的框架(引入后不会改变原来的代码,只需要引入包即可。)
3.控制反转,面向切面编程
4.支持事务处理,支持对框架的整合

【重点一】IOC(控制反转):

在Spring框架之前,我们在开发项目时,需要建立这么几个类,controller类,service接口,serviceImpl实现,dao接口类及dao实现类。当serviceImpl中使用dao操作数据库时,需要先new Dao() ,然后调用具体方法 来操作数据库,这样使得项目 有很高的耦合性,不利于项目的维护,而且需要调用多少个dao就需要new 多少个,很麻烦。

用了Spring框架之后,我们不需要再显式的new Dao() 来调用dao类,Spring的IOC(控制反转)是一种通过描述(xml或注解)并通过第三方去生产或获取对象的方式。

IOC的创建方式:
方式一、通过xml实现依赖注入

  1. 无参构造(默认的)

前提是需要有这么一个bean,并且有set方法(依赖注入的本质是通过set方法注入的)

 <bean id="User" class="comsa">
  <property name="name" value="骑车SV">
</bean>
       
  1. 有参构造的三种方式:

1.下标赋值:

<bean id="User" class="com.iss.s">
   <constructor-arg index="0" value="狂神">
</bean>

2.类型赋值

<bean id="User" class="com.iss.s">
   <constructor-arg type="java.lang,String" value="狂神">
</bean>

3.参数名

<bean id="User" class="com.iss.s">
   <constructor-arg name="name" value="狂神">
</bean>

方式二、通过注解实现
通过加入注解来实现自动装配,例如@Component,@Controller,@Autowird
@Value。。。。。

使用注解须知:
1.导入约束 :context约束
2.配置注解的支持,需要在配置文件中加入 context:annotation-config/

【重点二】AOP(面向切面编程)
利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高
了开发的效率。

了解AOP,首先需要了解AOP底层的实现------代理模式(23种设计模式之一),代理模式分为静态代理模式动态代理模式

静态代理模式理解分析:
按照我的理解,静态代理模式就是另外创建了一个代理类,这个代理类实现了原来类的接口,并添加了需要增加的功能需求,以在不改变原有代码的基础上新增一些新的功能。

(例:一个项目已经开发完成并上线了,后期为了方便排错,公司要求在项目的各个模块添加日志类,因为之前的功能已经完善,再改动原来的代码容易出错,其次,如果方法很多,那么,需要改动的代码量会非常大,因此,可以新增一个日志类,日志类继承项目的方法,并且在日志类中的方法中为每个类添加日志输出,这样可以不需要改动原来的代码,只需要在需要写日志的方法中调用日志代码即可。)

动态代理模式理解分析:
动态代理模式是动态生成的,而不是我们写好的,实际是运用反射的原理来实现的,要l学习动态代理,需要了解两个类:Proxy类和InvocationHandle()接口类,通过这两个类可以实现动态代理。

总之:AOP重要的是编程思想,即将一些固有的东西抽取出来,写成一个通用类,其他模块用到的时候直接调用即可,而不是在每个模块都去重复写一遍。例如:每个系统中的检验登录就是通用功能,不管在哪个模块,都需要校验下是否有效登录状态,因此可以将登录校验功能提取出来,成为一个独立的类,用到后直接调用即可。