Spring具有简单、可测试和松耦合等特点,从这个角度出发,Spring不仅可以用于服务器端开发,也可以应用于任何Java应用的开发中。关于Spring框架优点的总结,具体如下:

● 非侵入式设计

Spring是一种非侵入式(non-invasive)框架,它可以使应用程序代码对框架的依赖最小化。

● 方便解耦、简化开发

Spring就是一个大工厂,可以将所有对象的创建和依赖关系的维护工作都交给Spring容器管理,大大的降低了组件之间的耦合性。

● 支持AOP

Spring提供了对AOP的支持,它允许将一些通用任务,如安全、事务、日志等进行集中式处理,从而提高了程序的复用性。

● 支持声明式事务处理

只需要通过配置就可以完成对事务的管理,而无需手动编程。

● 方便程序的测试

Spring提供了对Junit4的支持,可以通过注解方便的测试Spring程序。

● 方便集成各种优秀框架

Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持。

● 降低Java EE API的使用难度

Spring对Java EE开发中非常难用的一些API(如:JDBC、JavaMail等),都提供了封装,使这些API应用难度大大降低。

Spring几乎成为了Java在企业级复杂应用开发的代名词,Spring简单的设计哲学和其完善的生态圈也给Java带来新的生命力!
所以,现在很多初学者,开始学习Java便接触Spring相关的内容,但是往往“欲速则不达”,在学习过程中遇到各种看都看不懂的问题,导致很多人认为Spring很难。

Spring 原理知识解析

Spring视频教程,全面深度讲解spring5底层原理

000-Spring高级49讲-导学

001-第1讲-BeanFactory与ApplicationContext_1

002-第1讲-BeanFactory功能

003-第1讲-ApplicationContext功能1

004-第1讲-ApplicationContext功能2,3

005-第1讲-ApplicationContext功能4

006-第1讲-小结

007-第2讲-BeanFactory实现

008-第2讲-BeanFactory实现

009-第2讲-BeanFactory实现-后处理器排序

010-第2讲-ApplicationContext实现1,2

011-第2讲-ApplicationContext实现3

012-第2讲-ApplicationContext实现4

013-第3讲-bean生命周期

014-第3讲-模板方法

015-第4讲-常见bean后处理器1,2

016-第4讲-常见bean后处理器3

017-第4讲-@Autowired bean后处理器执行分析

018-第4讲-@Autowired bean后处理器执行分析

019-第5讲-常见工厂后处理器

020-第5讲-工厂后处理器模拟实现-组件扫描

021-第5讲-工厂后处理器模拟实现-组件扫描

022-第5讲-工厂后处理器模拟实现-@Bean

023-第5讲-工厂后处理器模拟实现-Mapper

024-第5讲-工厂后处理器模拟实现-Mapper

025-第6讲-Aware与InitializingBean接口

026-第6讲-@Autowired失效分析

027-第7讲-初始化与销毁

028-第8讲-Scope

029-第8讲-Scope失效解决1,2

030-第8讲-Scope失效解决3,4

031-第9讲-aop之ajc增强

032-第10讲-aop之agent增强

033-第11讲-aop之proxy增强-jdk

034-第11讲-aop之proxy增强-cglib

035-第12讲-jdk代理原理

036-第12讲-jdk代理原理

037-第12讲-jdk代理源码

038-第12讲-jdk代理字节码生成

039-第12讲-jdk反射优化

040-第13讲-cglib代理原理

041-第13讲-cglib代理原理-MethodProxy

042-第14讲-MethodProxy原理

043-第14讲-MethodProxy原理

044-第15讲-Spring选择代理

045-第15讲-Spring选择代理

046-第15讲-Spring选择代理

047-第16讲-切点匹配

048-第16讲-切点匹配

049-第17讲-Advisor与@Aspect

050-第17讲-findEligibleAdvisors

051-第17讲-wrapIfNecessary

052-第17讲-代理创建时机

053-第17讲-吐槽@Order

054-第17讲-高级切面转低级切面

055-第18讲-统1转换为环绕通知

056-第18讲-统1转换为环绕通知

057-第18讲-适配器模式

058-第18讲-调用链执行

059-第18讲-模拟实现调用链

060-第18讲-模拟实现调用链-责任链模式

061-第19讲-动态通知调用

062-第19讲-动态通知调用

063-第20讲-DispatcherServlet初始化时机

064-第20讲-DispatcherServlet初始化时机

065-第20讲-DispatcherServlet初始化执行的操作

066-第20讲-RequestMappingHandlerMapping

067-第20讲-RequestMappingHandlerAdapter

068-第20讲-RequestMappingHandlerAdapter-参数和返回值解析器

069-第20讲-RequestMappingHandlerAdapter-自定义参数解析器

070-第20讲-RequestMappingHandlerAdapter-自定义返回值解析器

071-第21讲-参数解析器-准备

072-第21讲-参数解析器-准备

073-第21讲-参数解析器-@RequestParam 0-4

074-第21讲-参数解析器-组合模式

075-第21讲-参数解析器 5-9

076-第21讲-参数解析器 10-12

077-第22讲-获取参数名

078-第22讲-获取参数名

079-第23讲-两套底层转换接口

080-第23讲-1套高层转换接口

081-第23讲-类型转换与数据绑定演示

082-第23讲-web环境下数据绑定演示

083-第23讲-绑定器工厂

084-第23讲-绑定器工厂-@InitBinder扩展

085-第23讲-绑定器工厂-ConversionService扩展

086-第23讲-绑定器工厂-默认ConversionService

087-第23讲-加餐-如何获取泛型参数

088-第24讲-@ControllerAdvice-@InitBinder

089-第24讲-@ControllerAdvice-@InitBinder

090-第25讲-控制器方法执行流程

091-第25讲-控制器方法执行流程

092-第25讲-控制器方法执行流程-代码

093-第26讲-@ControllerAdvice-@ModelAttribute

094-第27讲-返回值处理器

095-第27讲-返回值处理器-1

096-第27讲-返回值处理器-2-4

097-第27讲-返回值处理器-5-7

098-第28讲-MessageConverter

099-第28讲-MessageConverter

100-第29讲-@ControllerAdvice-ResponseBodyAdvice

101-第29讲-@ControllerAdvice-ResponseBodyAdvice

102-第30讲-异常处理

103-第30讲-异常处理

104-第31讲-@ControllerAdvice-@ExceptionHandler

105-第32讲-tomcat异常处理

106-第32讲-tomcat异常处理-自定义错误地址

107-第32讲-tomcat异常处理-BasicErrorController

108-第32讲-tomcat异常处理-BasicErrorController

109-第33讲-HandlerMapping与HandlerAdapter-1

110-第33讲-HandlerMapping与HandlerAdapter-自定义

111-第34讲-HandlerMapping与HandlerAdapter-2

112-第35讲-HandlerMapping与HandlerAdapter-3

113-第35讲-HandlerMapping与HandlerAdapter-3-优化

114-第35讲-HandlerMapping与HandlerAdapter-3-优化

115-第35讲-HandlerMapping与HandlerAdapter-4-欢迎页

116-第35讲-HandlerMapping与HandlerAdapter-总结

117-第36讲-MVC执行流程

118-第36讲-MVC执行流程

119-第37讲-构建boot骨架项目

120-第38讲-构建boot war项目

121-第38讲-构建boot war项目-用外置tomcat测试

122-第38讲-构建boot war项目-用内嵌tomcat测试

123-第39讲-boot执行流程-构造

124-第39讲-boot执行流程-构造-1

125-第39讲-boot执行流程-构造-2

126-第39讲-boot执行流程-构造-3

127-第39讲-boot执行流程-构造-4-5

128-第39讲-boot执行流程-run-1

129-第39讲-boot执行流程-run-1

130-第39讲-boot执行流程-run-8-11

131-第39讲-boot执行流程-run-2,12

132-第39讲-boot执行流程-run-3

133-第39讲-boot执行流程-run-4

134-第39讲-boot执行流程-run-5

135-第39讲-boot执行流程-run-5

136-第39讲-boot执行流程-run-6

137-第39讲-boot执行流程-run-7

138-第39讲-boot执行流程-小结

139-第40讲-Tomcat重要组件

140-第40讲-内嵌Tomcat

141-第40讲-内嵌Tomcat与Spring整合

142-第41讲-自动配置类原理

143-第41讲-自动配置类原理

144-第41讲-AopAutoConfiguration

145-第41讲-AopAutoConfiguration

146-第41讲-自动配置类2-4概述

147-第41讲-自动配置类2-DataSource

148-第41讲-自动配置类3-MyBatis

149-第41讲-自动配置类3-mapper扫描

150-第41讲-自动配置类4-事务

151-第41讲-自动配置类5-MVC

152-第41讲-自定义自动配置类

153-第42讲-条件装配底层1

154-第42讲-条件装配底层2

155-第43讲-FactoryBean

156-第44讲-@Indexed

157-第45讲-Spring代理的特点

158-第45讲-Spring代理的特点

159-第46讲-@Value注入底层1

160-第46讲-@Value注入底层2

161-第47讲-@Autowired注入底层-doResolveDependency外1

162-第47讲-@Autowired注入底层-doResolveDependency外2

163-第47讲-@Autowired注入底层-doResolveDependency内1

164-第47讲-@Autowired注入底层-doResolveDependency内2

165-第47讲-@Autowired注入底层-doResolveDependency内3

166-第47讲-@Autowired注入底层-doResolveDependency内4

167-第48讲-事件监听器1

168-第48讲-事件监听器2

169-第48讲-事件监听器3

170-第48讲-事件监听器4

171-第48讲-事件监听器5

172-第49讲-事件发布器1

173-第49讲-事件发布器2

更多推荐

Spring框架的有哪些优点?