Spring出来好多好多年了,当时给Spring的定义是轻量级的web容器,这就对应什么是重量级的了web容器了,EJB。记得在2005年左右,做企业级应用开发时,选什么web容器,当然是EJB了,企业级嘛,要用就用重量级的。EJB出到3.0就没再往下发展了,主要原因就在于过于复杂了,而且跟其他很多框架都很难整合,会的人太少太少,而且99%的项目其实用不到EJB。所以在这个好的环境下,Spring快速发展,可以说是EJB的神助攻,到现在基本Spring一统天下了。
当然这个对初学者是利好消息,没有选择就是最好的选择,除此之外别无选择。下面几节将要介绍Spring的核心,控制反转IOC和面向切面编程AOP,这也是Spring开篇就说到的两个核心,弄懂这两个核心,再学其他的就易如反掌了。
先上个架构图吧,这个图就把Spring框架包含的一览无余,当然只是核心的,目前衍生的太多太多,全是集成各个中间件,还有去年大火的微服务,后面会讲到。
- test, spring集成了junit,对这个做了适配,更好的依赖Spring做测试
- Beans和Core ,提供了框架的基本支持, 主要包含了 IOC (控制反转) 和 DI (依赖注入) 特性, BeanFacotry 作为工厂模式的超级接口, 耦合低
- Context,继承了beans模块特性, 并且添加了国际化支持,事件传播,资源加载, 开发式的上下文构建, 还有超级接口 ApplicationContext
- SpEL,表达式支持, 这个主要就是用来支持一些spring XML 配置文件表达式 和 注解中一些表达式解析,让配置有动态特性
- DataAccess,提供持久化框架的集成,事务控制,消息队列服务等
- Web,提供View层的整合,WebSocket通信等
当然这张图还没有完全包含Spring,只包括最最核心的,下面几节我主要讲IOC和AOP,列表如下: