优点:
-
Spring是轻量级框架,可以自由选择使用哪几个Spring模块。
-
对代码的侵入小,应用程序对Spring API的依赖比较少。也方便整合老旧的项目。
-
通过控制反转与依赖注入,实现了对象依赖之间的解耦,降低了业务对象替换的复杂性
-
支持面向切面编程,将业务功能与额外功能分离,实现了高内聚
-
提供了Spring容器,统一管理对象的生命周期和配置信息
-
对主流的开源框架提供了很好的支持,简化开发过程,使我们更专注于业务逻辑的开发
缺点:
-
使用了大量的反射机制,比较占内存,而且效率不如直接调用高
-
Spring包含很多的组件,使用的组件越多,Spring的启动就会越慢
-
配置比较复杂,不过后来引入了注解配置,简化了配置过程
-
没有做到依赖管理,比如控制各依赖之间的版本兼容关系,非常麻烦。后续SpringBoot这一点做得很不错。
-
启动Spring的IOC容器,需要依赖第三方的Web服务器,自身不能启动
-
使用Spring做出来的程序,逻辑不太清晰,代码不直观,需要时不时去查看配置才能理解代码
-
调试阶段不直观,不容易定位到Bug的问题所在。