Spring 整体结构
下载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 整体结构相关推荐
- Spring源码阅读(一)——整体结构
Spring 总共大约有20个模块,由1300多个不同的文件构成. Spring源码阅读可以分为三个路线:IOC,AOP,外部组件. 个人主页:tuzhenyu's page 原文地址:Spring源 ...
- spring mvc mysql配置_spring mvc配置数据库连接
ACM 配置中心实战:Spring + MyBatis + Druid + ACM 很多基于 Spring MVC 框架的 Web 开发中,Spring + MyBatis + Druid 是一个黄金 ...
- 整合mybatis+spring项目。
目录 使用环境 MySQL Maven Mybatis 配置文件(非常重要) Spring 整体结构 测试 使用环境 jdk1.8 MySQ5.6 Maven3.3.6 MySQL 创建一个user表 ...
- 带你手写基于 Spring 的可插拔式 RPC 框架(二)整体结构
前言 上一篇文章中我们已经知道了什么是 RPC 框架和为什么要做一个 RPC 框架了,这一章我们来从宏观上分析,怎么来实现一个 RPC 框架,这个框架都有那些模块以及这些模块的作用. 总体设计 在我们 ...
- springmvc三十一:spring mvc整体结构
- 【面试】足够应付面试的Spring事务源码阅读梳理(建议珍藏)
Starting from a joke 问:把大象放冰箱里,分几步? 答:三步啊,第一.把冰箱门打开,第二.把大象放进去,第三.把冰箱门带上. 问:实现Spring事务,分几步? 答:三步啊,第一. ...
- [Spring mvc 深度解析(三)] 创建Spring MVC之器
第9章 创建Spring MVC之器 本章将分析Spring MVC自身的创建过程.首先分析Spring MVC的整体结构,然后具体分析每一层的创建过程. 1 整体结构介绍 Spring MVC中 ...
- spring之AOP的简单实例
AOP:面向切面编程,就是把除去业务部分以外的东西单独模块化,比如打日志等,就像学生信息的增删改查,可以把输出日志单独模块化出来,通过切面对的方式进行编程. 在进行实例编写之前先进行一些专业术语的了解 ...
- spring boot 1.5.4 整合 mybatis(十二)
上一篇:spring boot 1.5.4 整合log4j2(十一) Spring Boot集成Mybatis 更多更详细的配置参考文件:application.properties和<Spri ...
- spring源码分析之spring-web web模块分析
0 概述 spring-web的web模块是更高一层的抽象,它封装了快速开发spring-web需要的基础组件.其结构如下: 1. 初始化Initializer部分 1.1 Servlet3.0 的 ...
最新文章
- CMS垃圾收集器小实验之CMSInitiatingOccupancyFraction参数
- MySQL探秘(七):InnoDB行锁算法
- html 禁止缩放 ios10,完美解决ios10及以上Safari无法禁止缩放的问题
- Access SQL中Left Join、Right Join和Inner Join的使用
- js javaScript array 取指定元素索引、判断是否相同、重复、过滤数据
- c++ stack 遍历_划重点啦!带你解读图的两种遍历方式
- 你知道哪些情况下不该使用深度学习吗?
- oracle用户登录报错,oracle用户登录报错-bash: ulimit: open files: cannot modify limit: Operation not permitted...
- java se开发工具_JavaSE基础代码(1)-Hi ShanShi与开发工具
- 6.Python学习笔记:[enumerate元素加序号;isdigit()像数字;len()计算长度]
- ubuntu 下mysql 不显示当前的数据库名解决方法
- php对联广告,js 左右悬浮对联广告代码示例
- WPS---EXCEL(八)---互换两列数据
- S2B2C模式有何优势?S2B2C电商系统赋能皮革企业渠道,提升供应链管理效率
- 汇编语言TEST指令:对两个操作数进行逻辑(按位)与操作
- js底层原理作用域和作用域链
- Redis 面试面面观
- 美国圣克鲁斯大学计算机科学,加州大学圣克鲁兹分校最热门专业,了解一下?...
- 实验1 OpenGL初识
- 打印机显示无法连接计算机,网络打印提示:Windows无法连接到打印机,请检查打印机名并重试...