简单说_spring

前言

  最近在和小伙伴们讨论spring的内容,今天小咸儿特来总结一波~


叙述

宝图

  先来看看spring各个模块之间的关系

在这里插入图片描述
  既然看到了spring的各个模块关系图,那么我们就先来介绍一下spring的两大模块。

spring是什么

Spring是一个开放源代码的设计层面框架,它解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建。简单来说,Spring是一个分层的JavaSE/EE full-stack(一栈式) 轻量级开源框架。

或者简单说来就是一切从bean开始。

四个关键策略

  • 1、基于POJO的轻量级和最小侵入性编程;
  • 2、通过依赖注入和面向接口松耦合;
  • 3、基于切面和惯性进行声明式编程;
  • 4、通过切面和模板减少样板式代码;

IOC/DI

  IOC:控制反转,也就是说将需要实现的对象创建、依赖的代码交给spring去实现。

  DI:去赋值,维护好对象与对象之间的关系。

  • spring-beans和spring-core是核心模块,包含控制反转(Inversion of Control,IOC)和依赖注入(Dependency Injection,DI)。
  • spring-context模块构架于核心模块之上,扩展了BeanFactory,为她添加了Bean生命周期控制、框架事件体系以及资源加载透明化
  • spring-expression模块是统一表达式语言(EL)的扩展模块,可以查询、管理运行中的对象,同时也方便的可以调用对象方法、操作数组、集合等。

AOP

  AOP采取横向抽取机制,取代了传统纵向继承体系重复性代码。Spring AOP使用纯java实现,不需要专门的编译过程和类加载器,在运行期通过代理方式向目标类织入增强代码。

纵向继承:
在这里插入图片描述
横向抽取:
在这里插入图片描述
在这里插入图片描述
实现原理:

  • AOP底层采用代理机制进行实现。
  • 接口 + 实现类:spring采用JDK的动态代理 Proxy。
  • 实现类:spring采用cglib字节码增强。

由spring-aspects和spring-instrument和spring-aop三个模块组成。

  • spring-aop是spring的另一个核心模块,是AOP主要的实现模块,以JVM的动态代理技术为基础,设计出了一系列的AOP横切实现,比如前置通知、返回通知、异常通知等。
  • spring-aspects模块集成自AspectJ框架,主要是为spring AOP提供多种AOP实现方法。
  • spring-instrument模块是基于Java SE中的“java.lang.instrument”进行设计的,应该算是AOP的一个支援模块,主要作用是JVM启动时,生成一个代理类。

总结

  有关更多spring的内容分享,还请见小咸儿的博客内容。

感谢您的阅读~~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值