入门简介
1、什么是Spring(概述)
Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器(lightweight container)。他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。
- Spring是轻量级的开源的JavaEE框架
- Spring可以解决企业级应用开发的复杂性
- Spring两大核心——以IOC(控制反转)、AOP(面向切面编程)为主要构建思想的容器框架
- Spring是一个分层的JavaEE Full-stack(一站式)开源框架
- Spring在表现层(Web层)、业务逻辑层(Service层)、数据访问层(Dao层)中均提供了不同的解决方案
- 基于Spring开发的应用中的对象可以不依赖于Spring的API
2、Spring特点(优势)
2.1 方便解耦
- Spring通过作控制反转(IOC)的技术促进了低耦合,把对象创建和对象之间的调用过程,交给Spring进行管理,避免硬编码所造成的过度程序耦合(包类之间的依赖关系)。
- IOC(Inversion of Control)——控制反转,即“不用打电话过来,我们会打给你”。将对象的创建权交给Spring,无需我们手动new创建,对象的创建交给了Spring框架来完成。可以用来减低计算机代码之间的耦合度。
- 其中最常见的方式叫做依赖注入(Dependency Injection,简称DI)——即依赖的对象不需要手动调用setXX方法去设置,而是通过相应配置进行赋值。
- 实现了松耦合。依赖被注入到对象,而不是创建或寻找依赖对象。
2.2 AOP编程支持
- AOP(Aspect Oriented Programming)——面向切面编程,能帮助我们无耦合的实现日志记录,性能统计,安全控制。
- 同时把应用的业务逻辑与系统的服务分离开来。
- Spring的AOP支持允许将一些通用任务如安全、事务、日志等进行集中式管理,从而提供了更好的复用
2.3 方便程序测试
- 可以用非容器依赖的编程方式进行几乎所有的测试工作,在Spring里,测试不再是昂贵的操作,而是随手可做的事情。
- 例如:Spring对Junit4支持,可以通过注解方便的测试Spring程序。
2.4 方便和其他框架进行整合
- Spring 还提供了与第三方数据访问框架(如Hibernate、JPA)无缝集成,而且自己也提供了一套JDBC访问模板来方便数据库访问。
- Spring还提供与第三方Web(如Struts1/2、JSF)框架无缝集成,而且自己也提供了一套Spring MVC框架,来方便web层搭建。
- Spring能方便的与Java EE(如Java Mail、任务调度)整合,与更多技术整合(比如缓存框架)。
2.5 方便进行事务操作
- Spring对下至本地业务,上至全局业务(JAT)提供了统一的事务管理接口。
- Spring中我们可以从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活地进行事务的管理,提高开发效率和质量。
2.6 降低API的开发难度
- Spring对很多难用的Java EE API(如JDBC,JavaMail,远程调用等)提供了一个薄薄的封装层,通过Spring的简易封装,这些Java EE API的使用难度大为降低。
- Spring提供一个方便的API将特定技术的异常(由JDBC, Hibernate, 或JDO抛出)转化为一致的、 Unchecked异常
3、Spring框架模块
Data Access/Integration层:包含有JDBC、ORM、OXM、JMS和Transaction模块。
Web层:包含了Web、Web-Servlet、WebSocket、Web-Porlet模块。
AOP模块:提供了一个符合AOP联盟标准的面向切面编程的实现。
Core Container(核心容器):包含有Beans、Core、Context和SpEL模块。
Test模块:支持使用JUnit和TestNG对Spring组件进行测试。