Spring学习(一):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-corespring-beansspring-contextspring-context-supportspring-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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值