最近面试遇到面试主考官,有两次都问到了两次关于spring的优点与缺点,所以觉得这个问题·值得好好思考总结一下。
spring这个有两大概念:IOC和AOP
IOC反转控制(也可以叫DI依赖注入,其实都是一个意思,角度不同而已),
就是之前对象依赖关系不用你来维护,由IOC容器来维护(对象间依赖关系不用解释了吧,就是类与类之间的依赖关系,使用与被使用。举个例子电器工作需要电,电器类与电类之间是依赖关系,之前这些要你自己去完成它们的依赖关系,有了IOC容器这工作就就交给IOC容器来完成。)
在白话一点解释,两个实例依赖关系,像两个人,一个人要另一个人帮助,没有spring的时候A要自己去联系B“来帮帮忙”,有了spring后,实例就不需要自己去创建依赖的实例,被调用依赖的实例自己就过来帮忙了。
AOP也很好理解,面向切面编程,就是把一些公共的功能提取出来,到你用的时候你从容器中拿出对象直接用就可以了。像什么日志,解析XML文件什么的,用的时候调出来就可以,不是那种做到哪一步该要做什么就要自己去写怎么实现。
优点:
有了IOC容器,对象间依赖关系交给spring,更专注业务逻辑代码。
有了AOP对应OOP,很多功能更方便简单使用
像一个胶水一样,把一些好的框架粘合在一起方便实用(数据方面使用MyBatis,controller选择struts2,直接用spring粘在一起使用。)
缺点:
对比新出的springboot,肯定没人家好用(这是知乎的一个解释,觉得有道理)
spring像一个胶水,将框架黏在一起,后面拆分的话就不容易拆分了(这是面试官的一个回答解释,表示是一个思路。)
springJSP代码过多,过于灵活缺乏一个公用的控制器,不适合分布式(这个是CSDN上几个博客说的,不知道谁抄谁的,前半部分不说,后面的分布式你知道spring boot ,spring cloud吗,这都是什么时候的事了。)