---- 也许我注定成不了一个伟大的人, 但是至少我可以做一个很棒的自己. 我想我现在应该做的不是瞻前顾后, 而是活在当下, 正确认知自己, 做好自己现在的工作, 努力提升自己的能力, 踏踏实实地做一个程序员
一, 思维决定高度
Struts2:web 层, 比较简单(难点: ValueStack 值栈, 拦截器)
Hibernate:dao 层, 知识点杂(学了不用, 默认设置够用了)
Spring:service 层, 重要,(讲多少用多少)
二, Spring 框架概述
Spring 是一个开源框架, Spring 是于 2003 年兴起的一个轻量级的 Java 开发框架, 由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来. 它是为了解决企业应用开发的复杂性而创建的. 该框架的主要优势之一就是其分层架构, 分层架构允许使用者选择使用哪一个组件, 同时为 J2EE 应用程序开发提供集成的框架. Spring 使用基本的 JavaBean 来完成以前只可能由 EJB 完成的事情. 然而, Spring 的用途不仅限于服务器端的开发. 从简单性, 可测试性和松耦合的角度而言, 任何 Java 应用都可以从 Spring 中受益. Spring 的核心是控制反转 (IoC) 和面向切面 (AOP). 简单来说, Spring 是一个分层的 JavaSE/EE full-stack(一站式) 轻量级开源框架.
轻量级: 与 EJB 对比, 依赖资源少, 消耗的资源少.
分层: full-stack(一站式), 每一个层都提供解决方案.
Web 层: struts,spring-MVC
service 层: spring
dao 层: hibernate,mybatis,jdbcTemplate --> spring-data
三, Spring 的优点
方便解耦, 简化开发(高内聚低耦合)
`Spring 就是一个大工厂(容器)`, 可以将所有对象创建和依赖关系维护, 交给 Spring 管理.
`Spring 工厂就是用于生成 Bean.`
AOP 编程的支持
Spring 提供面向切面编程, 可以方便的实现对程序进行权限拦截, 运行监控等功能.
声明式事务的支持
只需要通过配置就可以完成对事务的管理, 而无需手动编程.
方便程序的测试
Spring 对 Junit4 支持, 可以通过注解方便的测试 Spring 程序.
方便集成各种优秀框架
Spring 不排斥各种优秀的开源框架, 其内部提供了对各种优秀框架 (如: Struts,Hibernate,MyBatis,Quartz 等) 的直接支持.
降低 JavaEE API 的使用难度
Spring 对 JavaEE 开发中非常难用的一些 API(JDBC,JavaMail, 远程调用等), 都提供了封装, 使这些 API 应用难度大大降低.
四, Spring 的体系结构
Spring 框架至今已集成了 20 多个模块, 这些模块分布在以下模块中:
核心容器(Core Container)
数据访问 / 集成 (Data Access/Integration) 层
Web 层
AOP(Aspect Oriented Programming)模块
植入 (Instrumentation) 模块
消息传输(Messaging)
测试 (Test) 模块
Spring 体系结构如下图:
一, 核心容器
Spring 的核心容器是其他模块建立的基础, 有 Spring-core,Spring-beans,Spring-context,Spring-context-support 和 Spring-expression(String 表达式语言)等模块组成.
Spring-core 模块: 提供了框架的基本组成部分, 包括控制反转 (Inversion of Control,IoC) 和依赖注入 (Dependency Injection,DI) 功能.
Spring-beans 模块: 提供了 BeanFactory, 是工厂模式的一个经典实现, Spring 将管理对象称为 Bean.
Spring-context 模块: 建立在 Core 和 Beans 模块的基础之上, 提供一个框架式的对象访问方式, 是访问定义和配置的任何对象的媒介. ApplicationContext 接口是 Context 模块的焦点.
Spring-context-support 模块: 支持整合第三方库到 Spring 应用程序上下文, 特别是用于高速缓存 (EhCache,JCache) 和任务调度 (CommonJ,Quartz) 的支持.
Spring-expression 模块: 提供了强大的表达式语言去支持运行时查询和操作对象图. 这是对 JSP2.1 规范中规定的统一表达式语言 (Unified EL) 的扩展. 该语言支持设置和获取属性值, 属性分配, 方法调用, 访问数组, 集合和索引器的内容, 逻辑和算术运算, 变量命名以及从 Spring 的 IoC 容器中以名称检索对象. 它还支持列表投影, 选择以及常用的列表聚合.
二, AOP 和 Instrumentation
Spring-aop 模块: 提供了一个符合 AOP 要求的面向切面的编程实现, 允许定义方法拦截器和切入点, 将代码按照功能进行分离, 以便干净地解耦.
Spring-aspects 模块: 提供了与 AspectJ 的集成功能, AspectJ 是一个功能强大且成熟的 AOP 框架.
Spring-instrument 模块: 提供了类植入 (Instrumentation) 支持和类加载器的实现, 可以在特定的应用服务器中使用.
三, 消息
Spring4.0 以后新增了消息 (Spring-messaging) 模块, 该模块提供了对消息传递体系结构和协议的支持.
四, 数据访问 / 集成
数据访问 / 集成层由 JDBC,ORM,OXM,JMS 和事务模块组成.
Spring-jdbc 模块: 提供了一个 JDBC 的抽象层, 消除了烦琐的 JDBC 编码和数据库厂商特有的错误代码解析.
Spring-ORM 模块: 为流行的对象关系映射(Object-Relational Mapping)API 提供集成层, 包括 JPA 和 Hibernate. 使用 Spring-ORM 模块可以将这些 O/R 映射框架与 Spring 提供的所有其他功能结合使用, 例如声明式事务管理功能.
Spring-oxm 模块: 提供了一个支持对象 / xml 映射的抽象层实现, 例如 JAXB,Castor,JiBX 和 XStream.
Spring-jms 模块(Java Messaging Service): 指 Java 消息传递服务, 包含用于生产和使用消息的功能. 自 Spring4.1 以后, 提供了与 Spring-messaging 模块的集成.
Spring-tx 模块 (事务模块): 支持用于实现特殊接口和所有 POJO(普通 Java 对象) 类的编程和声明式事务管理.
五, Web
Web 层由 Spring-Web,Spring-webmvc,Spring-websocket 和 Portlet 模块组成.
Spring-Web 模块: 提供了基本的 Web 开发集成功能, 例如多文件上传功能, 使用 Servlet 监听器初始化一个 IoC 容器以及 Web 应用上下文.
Spring-webmvc 模块: 也称为 Web-Servlet 模块, 包含用于 Web 应用程序的 Spring MVC 和 REST Web Services 实现. Spring MVC 框架提供了领域模型代码和 Web 表单之间的清晰分离, 并与 Spring Framework 的所有其他功能集成.
Spring-websocket 模块: Spring4.0 以后新增的模块, 它提供了 WebSocket 和 SocketJS 的实现.
Portlet 模块: 类似于 Servlet 模块的功能, 提供了 Portlet 环境下的 MVC 实现.
六, 测试
Spring-test 模块支持使用 JUnit 或 TestNG 对 Spring 组件进行单元测试和集成测试.
*****************************************************************************************************
我的博客园地址: https://www.cnblogs.com/zyx110/
来源: https://www.cnblogs.com/zyx110/p/11022891.html