Spring简介

来源:互联网 发布:哪里找到淘宝达人 编辑:程序博客网 时间:2024/04/28 05:44

Spring的诞生

  • 日益复杂的Java企业应用开发
  • EJB之殇
  • 轻量级开发框架之需
  • Spring横空出世
    1. Rod Johnson 《Expert One-on-One:J2EE Design and Development》
  • 应对应用复杂性,Spring的关键策略
    1. 基于POJO的轻量级和最小侵入性编程
    2. 通过依赖注入DI和面向接口实现松耦合
    3. 基于切面AOP和惯例进行声明式编程
    4. 通过切面和模版减少样板式代码

POJO

  • POJO定义
    1. POJO(Plain Old Java Objects)简单的普通的Java对象,Martin Fowler等发明的一个术语,为了避免和EJB等混淆
    2. 不具有任何特殊角色,不继承/实现任何其他Java框架的类或接口
  • 很多框架具有侵入性,强迫开发者编写与框架绑定的大量冗余,难以测试的代码
    1. EJB2.0
    2. Struts
  • Spring强调基于POJO的最小侵入性编程
    1. Spring不会强迫实现特定规范的接口或者继承特定类
    2. Spring通过依赖注入赋予POJO以魔力
  • Java EE 中轻量级框架与重量级框架的概念
    1. 简单一句话:量级主要由对容器的依赖性决定,依赖性越小,越轻量
    2. 容器:用来管理组件行为的一个集合工具,组件的行为包括与外部环境的交互、组件的生命周期、组件之间的合作依赖关系等等
    3. 在Java应用开发环境中,“轻量级Java”主要是指两个东西:简化的编程模型和更具有响应能力的容器。轻量级Java旨在消除与传统JavaEE API有关的不必要的复杂性和限制,同时缩短应用程序的部署时间
    4. 轻量级技术中,控制反转IoC(依赖注入DI)最关键。使用IoC,开发人员不需要编写复杂的代码来执行查询、处理基础架构异常或管理连接,就能够解决对象依赖性问题。这有助于简化代码、将业务逻辑与基础架构分离,从而使应用程序更容易于维护
    5. 轻量级 Java的另一个关键特征是,它不会强迫业务对象遵循平台特定接口。这循序开发人员在普通Java对象(POJO)中实现业务逻辑,从而提高生产率

依赖注入

  • ”过于“复杂的软件系统
  • 组件化的思想:分离关注点
  • 依赖注入:强制将组件的构建和使用分离
  • 耦合具有两面性
    1. 耦合代码难以测试
    2. 一定程度的耦合不可避免
  • 依赖注入DI
  • 依赖注入好处:松耦合
  • Spring通过应用上下文装载Bean的定义把它们组装起来,应用上下文负责对象的创建和组装

应用切面

  • 横切关注点

使用模版消除样板式代码

应用上下文

  • Spring应用中,对象生存于Spring容器中
  • 容器是Spring框架的核心
  • Spring容器:
    1. Bean工厂
    2. 应用上下文
  • 应用上下文基于Bean工厂而构建,并提供面向应用的服务
  • Spring常用应用上下文:
    1. ClassPathXmlApplicationContext
    2. FileSystemXmlApplicationContext
    3. XmlWebApplicationContext

Bean的生命周期

这里写图片描述

Spring模块

  • 获取Spring发布包
    1. Spring下载社区:SpringSource自建的下载社区www.springsource.com/download/community
    2. Maven中心:Maven工具默认访问的仓库
    3. 企业模块仓库:由SpringSource维护的一个企业模块仓库,类似Maven
    4. Maven公公仓库:位于Amazon S3服务器中
      • Spring发布包不再附带例子项目,可以通过SVN客户端工具从https://annosvn.springframework.org/svn/spring-samples下载
  • 核心Spring容器
    1. 核心容器负责Spring应用中的Bean的创建、和管理
    2. Bean工厂—提供依赖注入
    3. 应用上下文—提供配置Spring的不同方式
    4. 该模块还提供许多企业服务:邮件、JNDI访问、EJB集成、调度
  • Spring的AOP模块
    1. 是Spring应用开发切面的基础
    2. AOP有助于对象解耦
    3. AOP可将遍布应用的关注点从所应用的对象中解耦出来
  • 数据访问与集成
    1. Spring的JDBC和DAO模块封装了数据库访问的样板代码,使得代码简介明了并有效管理异常
    2. Spring的ORM模块简历在对DAO的支持之上,并为一些ORM框架提供了构建DAO的简便方式
    3. Spring对一些流行ORM框架进行集成
    4. 模块还包括在JMS之上构建的Spring抽象层,使用消息以异步方式与其他应用集成
    5. 模块还使用AOP为Spring应用中的对象提供事物管理服务
  • Web和远程调用
    1. Spring MVC
    2. Spring远程调用服务集成了RMI、Hessian、Burlap、JAW-WS,还自带一个远程调用框架:HTTP invoker
  • 测试-测试模块测试Spring应用

Spring Portfolio

  • 整个Spring Portfolio几乎为每个领域的Java开发提供Spring编程模型
  • Spring Web Flow
  • Spring Web Service
  • Spring Security
  • Spring Intergration
  • Spring Batch
  • Spring Social
  • Spring Mobile
  • Spring Dynamic Modules
  • Spring Rich Client
1 0
原创粉丝点击