spring 概述
Posted 陈标
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring 概述相关的知识,希望对你有一定的参考价值。
spring
1、容器:整合其它框架,将bean纳入容器中。
2、使用IOC解耦合。
Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。
Dependency Injection,即“依赖注入”:组件之间依赖关系。
旧的方式:每个对象负责管理与自己互相协作的对象,如:Action中,需要的Service对象,都需要自己创建(代码耦合度高)。
spring的IOC:所有的对象,都在spring容器中创建;对象间的关系,用DI进行关联。配合接口开发模式进行使用,当需要修改Service的具体实现时,不再需要修改Action中的代码,修改注解或者修改配置文件即可实现。
3、使用AOP处理事务。
spring AOP 只支持方法连接点。
AspectJ、JBoss支持方法、构造器、字段的连接点,功能更强大。
一、IOC(Inversion of Control,控制反转)(Dependency Injection,依赖注入DI):
由spring来控制对象的生命周期和对象间的依赖关系。
参考:https://www.cnblogs.com/ITtangtang/p/3978349.html
二、AOP(Aspect Oriented Programming,面向切面编程)
参考:https://www.cnblogs.com/xrq730/category/941473.html
spring 动态代理的实现:
JDK: InvocationHandler,Proxy
cglib:MethodInterceptor,Enhancer
spring aop的原理:
默认使用JDK动态代理技术。
为什么使用JDK作为默认的代理技术?
1、创建代理类速度:JDK使用面向接口编程,而cglib使用继承父类动态生成字节码技术,因此JDK创建代理的速度更快。
2、运行速度:cglib直接调用父类的被代理方法,而JDK需要使用反射调用被代理类的方法,所以运行速度cglib更快。
三、三级缓存(解决循环依赖问题)
https://www.jianshu.com/p/6c359768b1dc
以上是关于spring 概述的主要内容,如果未能解决你的问题,请参考以下文章