介绍
Spring 功能非常强大,是 JAVAEE 开发中 使用最多的 轻量级 开源框架,核心功能:
IoC(Inverse Of Control)控制反转 或 依赖式注入
AOP(Aspect Oriented Programming)面向切面编程
提供 SpringMVC 框架(相当于功能强大又使用简单的Servlet)
在 Spring4.0 又提出了 springboot 框架,引起巨大反响
还整合很多第三方框架和类库,逐渐成为使用最多的 Java EE 企业应用开源框架。
官网:
https://spring.io/projects/spring-framework
下载spring jar:
https://repo.spring.io/webapp/#/artifacts/browse/tree/General/libs-release-local/org/springframework/spring
体系结构
上图中,最下面的是spring的核心容器:
- Beans:spring-beans.jar
- Core:spring-core.jar
- Context:spring-context.jar
- SpEL:spring-expression.jar
上面4个jar包,是spring框架必须用到的jar包
历史
Spring 框架最初是由 Rod Johnson 编写的,并且 2003 年 6 月首次在 Apache 2.0 许可下发布。
优势
方便解耦,简化开发
通过 Spring 提供的 IoC 容器,可以将对象间的依赖关系交由 Spring 进行控制,避免 硬编码 所造成的过度程序耦合。
用户也不必再为单例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用。
AOP 编程的支持
通过 Spring 的 AOP 功能,方便进行面向切面的编程,许多不容易用传统 OOP 实现的功能,可以通过 AOP 轻松应付。
声明式事务的支持
可以将我们从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活的进行事务的管理,提高开发效率和质量。
方便测试
可以用非容器依赖的编程方式进行几乎所有的测试工作,简化测试
方便集成各种框架
Spring 可以降低各种框架的使用难度,提供了对各种优秀框架(mybatis、Hibernate、Quartz等)的支持。
降低 JavaEE API 的使用难度
Spring 对 JavaEE API(如 JDBC、JavaMail、远程调用等)进行了封装,使用这些 API 的难度大为降低。
经典源码
Spring 的源代码设计精妙、结构清晰,但是也很复杂。
很多大厂面试,都会问读了哪些源码,以及对源码的理解
一句话理解
ioc:将
Service组件、Dao组件 等交给Spring容器来管理(创建对象),不需要 手动new对象aop:在不改变源代码的情况下,在方法之前和之后增加额外的功能
