文章目录
1.什么是Spring
- Spring 是一个轻量级的 DI / IoC 和 AOP 容器的开源框架,基于 Sprin 可以解决 Java EE 开发的所有问题
- Spring 提倡以 “最少侵入” 的方式来管理应用中的代码,这意味着我们可以随时安装或者卸载 Spring
2.Spring 的优势
- 低侵入 / 低耦合 (降低组件之间的耦合度,实现软件各层之间的解耦)
- 声明式事务管理(基于切面和惯例)
- 方便集成其他框架(如MyBatis、Hibernate)
- 降低 Java 开发难度
- Spring 框架中包括了 J2EE 三层的每一层的解决方案(一站式)
3.Spring框架结构
1.数据访问/集成(Data Access/Integration)
- JDBC模块: 提供了 JBDC 的样例模板,使用这些模板能消除传统冗长的JDBC编码和必须的事务控制,而且还能享受到 Spring管理事务的好处。
- ORM模块:提供与流行的“对象/关系”映射框架的无缝集成,包括Hibernate、JPA、Ibatis等。而且可以使用Spring事务管理无需额外控制事务。
- OXM模块:提供了一个Object/XML阻映射实现,将Java对象映射成XML数据,或者将XML数据映射成Java 对象,Object/XML 映射实现包括JAXB、Castor、XMLBeans和XStream等。
- JMS模块:提供一套“消息生产者,消息消费者”模板,使之更加简单的使用JMS。JMS 用于在两个应用程序之间 ,或分布式系统中发送消息 ,进行异步通信。
- Transactions模块:该模块用于Spring 管理 事务,只要是Spring 管理对象都能得到Spring管理事务的好处,无需在代码中进行事务控制了,而且支持编程和声明性的事务管理
2. Web
- WebSocket模块:提供WebSocket功能。
- Servlet模块:提供了一个Spring MVC Web框架实现。Spring MVC框架提供了基于注解的请求资源注入、更简单的数据绑定、数据验证等及一套非常易用的JSP标签,完全无缝与 Spring其他技术协作。
- Web模块:提供了基础的Web功能。例如:多文件上传、集成IOC容器、 远程过程访问( RML、Hessian、Burlap )以及Web Service 支持,并提供一个RestTemplate类来进行方便的 Restful Services访问。
- Portet模块 提供Portet环境支持。
3. AOP Aspects
- AOP:提供了符合AOP Alliance规范的面向切面的编程(aspect-orientedprogramming)实现,提供比如日志记录、权限控制、性能统计等通用功能和业务逻辑分离的技术,并且能动态地把这些功能添加到需要的代码中。这样各司其职,降低业务逻辑和通用功能的耦合.
- Aspects:提供了对AspectJ的集成,AspectJ提供了比Spring ASP更强大的功能。
4. Core Container(核心容器)
- Spring-beans:提供了框架的基础部分,包括控制反转和依赖注入。其中BeanFactory是容器核心,本质是“工厂设计模式”的实现,而且无需编程实现“单例设计模式”,单例完全由容器控制,而且提倡面向接口编程,而非面向实现编程。所有应用程序对象及对象间关系由框架管理,从而真正从程序逻辑中,把维护对象之间的依赖关系提取出来,所有这些依赖关系都由BeanFactory来维护。
- Spring-Core:核心工具类,封装了框架依赖的最底层部分,包括资源访问、类型转换
及一些常用工具类。 - Spring-context:以Core和Beans为基础,集成Beans块功能并添加资源绑定、数据验证、国际化、JavaEE支持、容器生命周期、事件传播等。核心接口是ApplicationContext。
- Spring-SpEL:提供强大的表达式语言支持,支持访问和修改属性值、方法调用;支持访问及修改数组、容器和索引器,命名变量,支持算数和逻辑运算,支持从Spring容器获取Bean,还支持列表投影、选择和一般的列表聚合等。
5. Test
Spring支持Junit和TestNG测试框架,而且还额外提供了一些基于Spring的测试功能,比如在测试web框架时,模拟HTTP求的功能。