最近一年多都是在银行做开发,用的他们银行自己的框架CTP,因而渐渐对Spring以及它兄弟SpringBoot和SpringCloud愈发生疏。
现在突然觉醒,不能再一直以来CTP框架在银行开发中浑浑噩噩度日,所以决定将丢到的东西一一拾起。同时与君共勉,相互学习,共同进步。
学习Spring5,首先要有个总览图。
Spring是分层的JAVA SE/EE轻量级开源框架。以IOC(Inverse of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)为内核。
在实际开发中,通常使用三层架构,即:表现层(Web)、业务逻辑层(Service)、持久层(dao)。
Spring 总共大约有 20 个模块。
一、Data Access/Integration 数据访问/集成
JDBC模块:提供一个JDBC的抽象层、大幅减少在开发过程中对数据库操作的编码;
ORM模块:对流行的对象关系映射API,包括JPA、JDO、Hibernate、和iBatis 提供了集成层;Obeject-relation-mapping。
OXM模块:提供了一个支持对象/XML 映射的抽象层实现,如JAXB、XMLBeans、XStream。
JMS模块:指Java的消息服务,包含的功能为生产和消费的信息,Java Message Service。
Transaction事务模块:支持变成和声明式事务管理实现特殊接口类,所有的POJO(Plain Ordinary Java Object,普通的Java对象,特征是与Data映射,只有Setter、Getter方法)。
二、Web模块
web模块:提供了基本的Web开发集成特点,例如文件上传功能、使用的servlet监听器的IoC容器初始化以及应用上下文。
Servlet模块:包括Spring模型--视图--控制器(MVC:module-View-Controller)实现Web应用程序。
Struts模块:包含支持类内的Spring应用程序,集成经典的StrutsWeb层(关于Struts 在后面逐渐被淘汰,理由有时间再说)。
Portlet模块:提供了在portlet环境中使用MVC实现,类似Web-Servlet模块的功能。
三、Core Container核心容器
Bean模块:提供了BeanFactory,是工厂模式的经典实现,Spring将管理对象成为Bean(什么是Bean呢?和POJO有什么区别?请参考本文前面数据访问层中提到的POJO)。
Core核心模块:提供了Spring容器的基本组成部分,包括Ioc和DI功能(什么是控制反转?什么是依赖注入?又有什么区别?别急,后面会一一讲到)。
Context上下文模块:建立在核心和Beans模块的基础之上,是访问定义和配置任何对象的媒介。ApplicationContext 接口是上下文模块的焦点。
Expression Language 模块:是运行时查询和操作对象图的强大的表达式语言。也是就是支持Java/XML/注解/SQL/JSON/JSP等等在Spring中进行表达。
四、其他模块
AOP模块:提供了面向切面编程实现,允许定义方法拦截器和切入点,将代码按照功能进行分离,以降低耦合性。
Aspect模块:提供了AspectJ的集成,是一个强大且成熟的面向切编程(AOP)框架。---Spring 为什么这么受欢迎,就是因为它可以集成很多模块和兼容其它得分框架,达到扩展功能呢和解耦和的目的。
Instrumentation模块:提供了类工具的支持和类加载器的实现,可以在特定的应用服务器中使用。
Message模块:顾名思义,其实就是负责消息的梳理、处理,包括转换和反映给不同的层。
Test模块:支持Spring组件,使用JUnit 或Test NG 框架的测试。现在许多公司,也包括我们银行体系都要求做到单元测试TDD或者Jenkins 框架下的持续集成的单元测试,已确保代码在每次迭代中避免出现错误,以及万一出现错误后可以很快的定位代码块,进行后续维护很方便。
以上是对Spring模块的一个大概了解。
后面我们将一一深入到上面模块中,对Spring框架进行学习。
(以下是后言,可以当作废话)
我想说的我可能会跳着说,按照Core Container(核心容器)到AOP,再到Data Acess/Integrtaion,然后是web,最后到我们的单元测试Jenkins。当然有的时候在学习时也会串着说,因为需要进行对比和联系,以便更好的认识他们。