Spring 概述与介绍
一 Spring 概述
1.Spring 是最受欢迎的企业级 Java 应用程序开发框架,数以百万的来自世界各地的开发人员使用 Spring 框架来创建性能好、易于测试、可重用的代码。
2.Spring 框架是一个开源的 Java 平台,它最初是由 Rod Johnson 编写的,并且于 2003 年 6 月首次在 Apache 2.0 许可下发布。
3.Spring 是轻量级的框架,其基础版本只有 2 MB 左右的大小。
4.Spring 框架的核心特性是可以用于开发任何 Java 应用程序,但是在 Java EE 平台上构建 web 应用程序是需要扩展的。 Spring 框架的目标是使 J2EE 开发变得更容易使用,通过启用基于 POJO 编程模型来促进良好的编程实践。
二 Spring 优良特性
Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器(框架)。
- 非侵入式:基于Spring开发的应用中的对象可以不依赖于Spring的API
- 控制反转: IOC——Inversion of Control,指的是将对象的创建权交给 Spring 去创建。使用 Spring 之前,对象的创建都是由我们自己在代码中new创建。而使用 Spring 之后。对象的创建都是给了 Spring 框架。
- 依赖注入: DI——Dependency Injection,是指依赖的对象不需要手动调用 setXX 方法去设置,而是通过配置赋值。
- 面向切面编程: Aspect Oriented Programming——AOP
- 容器: Spring 是一个容器,因为它包含并且管理应用对象的生命周期
- 组件化:Spring 实现了使用简单的组件配置组合成一个复杂的应用。在 Spring 中可以使用XML和Java注解组合这些对象
- 一站式:在 IOC 和 AOP 的基础上可以整合各种企业应用的开源框架和优秀的第三方类库(实际上 Spring 自身也提供了表述层的 SpringMVC 和持久层的 Spring JDBC)
三 Spring框架体系结构
- 3.1 Spring 框架体系结构
-
3.2 核心容器
核心容器由 spring-core,spring-beans,spring-context,spring-context-support和spring-expression(SpEL,Spring 表达式语言,Spring Expression Language)等模块组成。
- spring-core(核心) 模块提供了框架的基本组成部分,包括 IoC 和依赖注入功能。
- spring-beans(管理bean) 模块提供 BeanFactory,工厂模式的微妙实现,它移除了编码式单例的需要,并且可以把配置和依赖从实际编码逻辑中解耦。
- context(上下文配置文件) 模块建立在由 core和 beans 模块的基础上建立起来的,它以一种类似于 JNDI 注册的方式访问对象。Context模块继承自Bean模块,并且添加了国际化(比如,使用资源束)、事件传播、资源加载和透明地创建上下文(比如,通过Servelet容器)等功能。Context模块也支持Java EE的功能,比如EJB、JMX和远程调用等。ApplicationContext接口是Context模块的焦点。spring-context-support提供了对第三方库集成到Spring上下文的支持,比如缓存(EhCache, Guava, JCache)、邮件(JavaMail)、调度(CommonJ, Quartz)、模板引擎(FreeMarker, JasperReports, Velocity)等。
- spring-expression(SpEL表达式) 模块提供了强大的表达式语言,用于在运行时查询和操作对象图。
-
3.3 数据访问/集成
数据访问/集成层包括 JDBC,ORM,OXM,JMS 和事务处理模块
- JDBC(数据库开发) 模块提供了 JDBC 抽象层,它消除了冗长的 JDBC 编码和对数据库供应商特定错误代码的解析。
- ORM(整合Mybatis) 模块提供了对流行的对象关系映射 API 的集成,包括 JPA、Mybatis 和 Hibernate 等。通过此模块可以让这些 ORM 框架和 spring的其它功能整合,比如前面提及的事务管理。
- OXM 模块提供了对 OXM 实现的支持,比如 JAXB、Castor、XML Beans、JiBX、XStream 等
- JMS 模块包含生产(produce)和消费(consume)消息的功能。
- Transactions(事务) 模块为实现特殊接口类及所有的 POJO 支持编程式和声明式事务管理。
-
3.4 其他
- AOP(切面编程) 模块提供了面向方面(切面)的编程实现,允许你定义方法拦截器和切入点对代码进行干净地解耦,从而使实现功能的代码彻底的解耦出来。使用源码级的元数据,可以用类似于.Net属性的方式合并行为信息到代码中。
四 Spring优点
1.方便解耦,简化开发 (高内聚低耦合)
-
Spring就是一个大工厂(容器),可以将所有对象创建和依赖关系维护,交给Spring管理
-
spring工厂是用于生成bean (静态工厂模式)
-
面试题:spring的IoC(控制反转)底层用到什么设计模式?-- 静态工厂模式
2.AOP编程的支持
- Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能。
- 打印日志
- 面试题:aop的底层运用到什么设计模式? – 动态代理
3.声明式事务的支持 (AOP 动态代理)
- 只需要通过配置就可以完成对事务的管理,而无需手动编程
4.方便程序的测试
- Spring对Junit4支持,可以通过注解方便的测试Spring程序
5.方便集成各种优秀框架
- Mybatis
- Redis
- Shiro
- ActiceMQ