前言
在系统开发启动时我们会先选择个框架,框架一般会决定了架构模式,一般会首选支持分层架构。为何Spring长盛不衰,和它很好的支持分治不无关系。
叙述
首先Spring是容器,也就是按Spring的规则,把类统一托管给Spring来处理。
其次Spring是框架,框架肯定是为了解决某些问题的,而Spring解决的核心问题是高内聚低耦合和关注点分离两个软件架构关键问题。
高内聚低耦合通过控制反转(Spring核心)来解决,关注点分离通过面向切面(Spring主要内容)解决。
最基础的就是使用了Java的反射机制,Spring利用反射机制时使用了设计模式中的工厂模式。有了反射机制才能考虑控制反转,Spring中依赖注入是控制反转的实现方式。
有了控制反转,且解决了高内聚低耦合的问题。接着考虑关注点分离的问题,我们通过面向对象解决分类分层问题,那通用问题通过面向切面来解决。Spring中是通过动态代理来实现的面向切面(动态代理属于运行时织入,还有编译时织入和加载时织入),使用了设计模式的代理模式。