Spring是一个开源免费的轻量级且非侵入式的框架(容器),其通过注入Bean的方式实现了控制反转IOC(Inversion of Control)和面向切面编程AOP(Aspect Oriented Programming),并且具备对事物和其它框架(如MyBatis)的支持。Spring的核心思想是简化开发。
优势
作为一个开发容器,Spring大大地简化了开发,提升了开发地效率
通过注入Bean的方式将控制从程序本身反转给了客户,使得程序的灵活性更高,改变了程序设计的逻辑
将Bean和代码分离,使得程序的耦合性降低,提升了开发的安全性和代码的可读性
通过AOP将程序解耦,使得业务和附加功能得以分离,大大地提升了开发地安全性和代码的可读性
支持多个常用的开源框架
用的人多,是经典的SSM框架的重要组成部分
劣势
经过多年的演变,Spring已经编程了一个大杂烩,其配置已经越来越复杂
Spring的设计模式:
工厂模式 : Spring 容器本质是一个大工厂,使用工厂模式通过 BeanFactory、ApplicationContext 创建 bean 对象。
代理模式 : Spring AOP 功能功能就是通过代理模式来实现的,分为动态代理和静态代理。
单例模式 : Spring 中的 Bean 默认都是单例的,这样有利于容器对 Bean 的管理。
模板模式 : Spring 中 JdbcTemplate、RestTemplate 等以 Template 结尾的对数据库、网络等等进行操作的模板类,就使用到了模板模式。
观察者模式: Spring 事件驱动模型就是观察者模式很经典的一个应用。
适配器模式 :Spring AOP 的增强或通知 (Advice) 使用到了适配器模式、Spring MVC 中也是用到了适配器模式适配 Controller。
策略模式:Spring 中有一个 Resource 接口,它的不同实现类,会根据不同的策略去访问资源。