关于spring框架你应该知道的

网上关于spring的教学文档已经很多很全了,博主就在这里以一个刚学完的小白角度发表一下见解咯。
为什么要使用spring框架。当一个小白不知道框架直接硬写时,各种连接类,控制类,功能类一般直接写在一起。但是当你以后想要给你的web网站增加功能时,比如你想给登录界面加一个面部识别算法时,只能去关于你的登录界面的源代码里去找,一点点修改源代码,这时候一般3行一个小bug,10行一个大bug。因为当你想直接修改源代码增加功能时,你很有可能把你原来的功能也修改了。这个时候你的代码耦合度就是很高的。(想改变一个功能,而这个功能可与别的功能有联系)一个网站不可能一成不变,后期增加功能必不可免。这时候spring框架就很吊了。它能将你代码实现解耦。也就是将各个功能实现分离,也就是改变其中一个不会对另一个造成影响。
那么如何使用spring框来?
Spring框架的核心包括IOC与AOP。
IOC:ioc控制反转就是实现了被动接收。(讲人话)就是你要想使用spring框架你总要把你写的Java的对象交给spring框架管吧。这个时候你就可以通过配置xml文件或者注解的方式将你创建的对象交给spring框架了。
AOP:面向切面的编程。(。。。)就是可以让你在不改变源代码的情况下来进行功能的修改或者增强(这不就是我们选择框架的原因吗)。
那么如何来实现这两个东西呢。
第一步当然是引入一手jar包
关于spring框架你应该知道的
IOC操作说白了就是配置吗。通过xml文件或者注解来配置就好了。(百度一下,你就知道。)
AOP里面有些术语是一定要知道的:
1,连接点
类里面哪些方法可以增强,可以增强的那些方法就是连接点
2,切入点
实际被真正增强的方法,成为接入点
3,通知(增强)
(1)实际增强的逻辑部分成为通知(增强)
(2)通知有多种类型
前置通知//在方法前面执行
后置通知//在方法后面执行
环绕通知//前后都有
异常通知//异常执行
最终通知
4,切面//是一种动作
把通知应用到切入点的过程
AOP底层使用的是动态代理
第一种有接口情况,使用后jdk动态代理
创建当前类接口实现类代理对象,增强类的方法
使用Proxy类里面的方法创建代理对象 //在java.lang.reflect 里面
调用newProxyInstance方法//方法用三个参数 1,类加载器 2,增强方法所在的类,这个类实现接口,支持多个接口 3,实现这个接口InvocationHandler,创建代理对象,写增强方法。
第二种没用接口情况,使用CGLIB动态代理
创建当前类子类的代理对象,增强类的方法
那么究竟如何操作呢。这里来一波基于注解方式的实现操作
1,创建类,在类里面定义方法
2,创建增强类(编写增强逻辑),在增强类里面创建方法,让不同的方法代表不同通知类型
3,进行通知的配置
(1)在spring配置文件中,开启注解扫描
注入空间aop与context
(2)使用注解创建原来的类和增强类对象
(3)在增强类上面添加注解@Aspect
(4)在spring配置文件中开启生成代理对象
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
4,配置不同类型的通知
(1)在增强类的里面,在作为通知方法上面添加通知类型注解,使用切入点表达式配置
例如添加前置通知
@Before(value=“excution(*com.atguigu.User.add(…))”)
5,相同切入点的抽取
当好几个增强都是对一个公共切入点时,可以在一个空方法上面加一个@Ponitcut(表达式)。然后在用到该切入点的增强注解的value值里面放这个方法

6,有多个增强类对同一个方法进行增强,设置增强类的优先级
在增强类上面添加注解@Order(数字类型值),数字类型值越小优先级越高

这只是单纯的博主的单纯的见解,希望对你有所帮助昂。