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实现依赖注入:
- 无参构造(默认的)
前提是需要有这么一个bean,并且有set方法(依赖注入的本质是通过set方法注入的)
<bean id="User" class="comsa">
<property name="name" value="骑车SV">
</bean>
- 有参构造的三种方式:
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重要的是编程思想,即将一些固有的东西抽取出来,写成一个通用类,其他模块用到的时候直接调用即可,而不是在每个模块都去重复写一遍。例如:每个系统中的检验登录就是通用功能,不管在哪个模块,都需要校验下是否有效登录状态,因此可以将登录校验功能提取出来,成为一个独立的类,用到后直接调用即可。