下载Spring源码用来学习

直接使用github的svn下载功能:
https://github.com/spring-projects/spring-framework.git/tags/v3.0.5.RELEASE/org.springframework.jms
https://github.com/spring-projects/spring-framework/branches/3.0.x/org.springframework.aspects

Srping的优点

  • 简化企业应用开发的复杂性。
  • 使用IOC和AOP来统一了应用对象的查找、配置、和生命周期管理,分离了业务和基础服务中的不同关注点。开发人员可以基于简单Java对象轻松地实现与EJB同样强大的功能。
  • 在业务层提供了全面的解决方案,包括:数据库持久化支持、声明式事务、远程服务访问,以及JMS,Mail,定时等多种企业服务。
  • 在Web层提供了MVC框架,并且可以集成各种Web框架或者试图技术(JSP,Velocity)
  • IOC帮我们省略了大量的定制工厂和系统配置类
  • Hibernate帮我们省略了大量的对象/关系映射,数据库连接代码。 二者整合有省去了大量的对于操作Hibernate所需要的代码

Spring的设计理念

  • 好的设计比实现技术更重要,
  • 模型上接口松散耦合,
  • 代码应该容易被测试

Spring核心特性

    IOC,  不是类去找其依赖的对象,而是容器把依赖注入给他。AOP,    两个图很好的说明了, 一个是多线图,一个是分层图模板, 最典型的是数据库连接模板

整体结构


核心容器:

  • Factory 负责Bean创建和配置IOC-core and bean
  • Context: 在Core-bean基础上提供一些框架的支持,比如国际化,资源加载,JMX, 事件传播等
  • EL 是spring的扩展语言可以不依赖于Spring容器直接调用, ExpressionParser parser = new SpelExpressionParser();通常的用法如下:
Expression exp = parser.parseExpression("'Hello World'.bytes.length");

此外Spring的占位符等使用了它例如:

<bean class="mycompany.RewardsTestDatabase"><property name="databaseName"value="#{systemProperties.databaseName}"/><property name="keyGenerator"value="#{strategyBean.databaseKeyGenerator}"/>
</bean>

DA/I
JDBC 解决了JDBC大量样板代码以及不友好的JDBC错误码
ORM 集成了流行的关系映射API:JPA,Hbernate, iBatis等,spring可以让这些框架跟spring其他的特性比如声明式事务管理特性相结合。
OXM 提供了XML/对象的映射模板, 简化JAXB。
JMS 异步消息的支持
通过AOP支持事务

WEB
提供web功能集成:文件上传,面向web的Context
对于Servlet,提供MVC
对于Structs提供整合

AOP
面向切片,与aspectJ整合

Spring系统的其他部分:
Spring Web Flow: 基于流程的会话式Web应用(购物车),
Spring Web Service
Spring Security
Spring Integration: 应用集成模式
Spring Batch 批处理
Spring DM

版本更新:

2.5 新特性:

  • 对注解的支持
  • 内嵌AspectJ
  • SqlJdbcTemplate使用命名参数

3.0 新特性

  • Spring MVC支持Rest
  • 更多的注解支持

下面是对源代码的一些分析和问题。

spring asm在core.java中有实现,跟spring-asm中的会冲突。
spring的schmel文件是放在beans.jar的xml.factory中的,默认回去classpath中找,如果没有会报错

Spring 整体结构相关推荐

  1. Spring源码阅读(一)——整体结构

    Spring 总共大约有20个模块,由1300多个不同的文件构成. Spring源码阅读可以分为三个路线:IOC,AOP,外部组件. 个人主页:tuzhenyu's page 原文地址:Spring源 ...

  2. spring mvc mysql配置_spring mvc配置数据库连接

    ACM 配置中心实战:Spring + MyBatis + Druid + ACM 很多基于 Spring MVC 框架的 Web 开发中,Spring + MyBatis + Druid 是一个黄金 ...

  3. 整合mybatis+spring项目。

    目录 使用环境 MySQL Maven Mybatis 配置文件(非常重要) Spring 整体结构 测试 使用环境 jdk1.8 MySQ5.6 Maven3.3.6 MySQL 创建一个user表 ...

  4. 带你手写基于 Spring 的可插拔式 RPC 框架(二)整体结构

    前言 上一篇文章中我们已经知道了什么是 RPC 框架和为什么要做一个 RPC 框架了,这一章我们来从宏观上分析,怎么来实现一个 RPC 框架,这个框架都有那些模块以及这些模块的作用. 总体设计 在我们 ...

  5. springmvc三十一:spring mvc整体结构

  6. 【面试】足够应付面试的Spring事务源码阅读梳理(建议珍藏)

    Starting from a joke 问:把大象放冰箱里,分几步? 答:三步啊,第一.把冰箱门打开,第二.把大象放进去,第三.把冰箱门带上. 问:实现Spring事务,分几步? 答:三步啊,第一. ...

  7. [Spring mvc 深度解析(三)] 创建Spring MVC之器

    第9章 创建Spring MVC之器 ​ 本章将分析Spring MVC自身的创建过程.首先分析Spring MVC的整体结构,然后具体分析每一层的创建过程. 1 整体结构介绍 Spring MVC中 ...

  8. spring之AOP的简单实例

    AOP:面向切面编程,就是把除去业务部分以外的东西单独模块化,比如打日志等,就像学生信息的增删改查,可以把输出日志单独模块化出来,通过切面对的方式进行编程. 在进行实例编写之前先进行一些专业术语的了解 ...

  9. spring boot 1.5.4 整合 mybatis(十二)

    上一篇:spring boot 1.5.4 整合log4j2(十一) Spring Boot集成Mybatis 更多更详细的配置参考文件:application.properties和<Spri ...

  10. spring源码分析之spring-web web模块分析

    0 概述 spring-web的web模块是更高一层的抽象,它封装了快速开发spring-web需要的基础组件.其结构如下: 1. 初始化Initializer部分 1.1  Servlet3.0 的 ...

最新文章

  1. CMS垃圾收集器小实验之CMSInitiatingOccupancyFraction参数
  2. MySQL探秘(七):InnoDB行锁算法
  3. html 禁止缩放 ios10,完美解决ios10及以上Safari无法禁止缩放的问题
  4. Access SQL中Left Join、Right Join和Inner Join的使用
  5. js javaScript array 取指定元素索引、判断是否相同、重复、过滤数据
  6. c++ stack 遍历_划重点啦!带你解读图的两种遍历方式
  7. 你知道哪些情况下不该使用深度学习吗?
  8. oracle用户登录报错,oracle用户登录报错-bash: ulimit: open files: cannot modify limit: Operation not permitted...
  9. java se开发工具_JavaSE基础代码(1)-Hi ShanShi与开发工具
  10. 6.Python学习笔记:[enumerate元素加序号;isdigit()像数字;len()计算长度]
  11. ubuntu 下mysql 不显示当前的数据库名解决方法
  12. php对联广告,js 左右悬浮对联广告代码示例
  13. WPS---EXCEL(八)---互换两列数据
  14. S2B2C模式有何优势?S2B2C电商系统赋能皮革企业渠道,提升供应链管理效率
  15. 汇编语言TEST指令:对两个操作数进行逻辑(按位)与操作
  16. js底层原理作用域和作用域链
  17. Redis 面试面面观
  18. 美国圣克鲁斯大学计算机科学,加州大学圣克鲁兹分校最热门专业,了解一下?...
  19. 实验1 OpenGL初识
  20. 打印机显示无法连接计算机,网络打印提示:Windows无法连接到打印机,请检查打印机名并重试...

热门文章

  1. PDF文件如何插入图片?简单的操作方法
  2. 如何在PDF文件中插入文本或图片?
  3. Word如何设置添加文本框?分享经验!怎么在word中加入文本框?
  4. Python中的numpy库介绍!
  5. WinForm界面开发
  6. 33岁学做软件测试还来得及? 4个建议送给你!
  7. 在Chrome、Firefox等高版本浏览器中实现在线编辑、审阅Office文档新方案
  8. 云控微信开发SDK使用教程--微信联系人标签新增,修改通知服务端
  9. Dota2 AI开发(一)环境配置
  10. Excel批量填充空白行内容的方法及技巧