Spring 整体结构

简介: <div class="markdown_views"><h3 id="下载spring源码用来学习">下载Spring源码用来学习</h3><p>直接使用github的svn下载功能: <br><a href="https://github.com/spring-projects/spring-framework.git/tags/v3.0.5.RELEASE/org.

下载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中找,如果没有会报错

相关文章
|
6月前
|
人工智能 JSON 前端开发
【Spring boot实战】Springboot+对话ai模型整体框架+高并发线程机制处理优化+提示词工程效果展示(按照框架自己修改可对接市面上百分之99的模型)
【Spring boot实战】Springboot+对话ai模型整体框架+高并发线程机制处理优化+提示词工程效果展示(按照框架自己修改可对接市面上百分之99的模型)
|
6月前
|
SQL Java 数据库连接
15:MyBatis对象关系与映射结构-Java Spring
15:MyBatis对象关系与映射结构-Java Spring
109 4
|
消息中间件 前端开发 安全
【开篇 | Spring深度学习】Spring设计理念和整体架构
【开篇 | Spring深度学习】Spring设计理念和整体架构
72 0
|
6月前
|
Cloud Native Java Docker
【Spring云原生】Spring官宣,干掉原生JVM,推出 Spring Native!整体提升性能!Native镜像技术在Spring中的应用
【Spring云原生】Spring官宣,干掉原生JVM,推出 Spring Native!整体提升性能!Native镜像技术在Spring中的应用
|
6月前
|
安全 Java 数据库连接
Spring整体简介
Spring整体简介
58 0
|
6月前
|
安全 Java Maven
Spring Boot常见企业开发场景应用、自动配置原理结构分析(三)
Spring Boot常见企业开发场景应用、自动配置原理结构分析
|
6月前
|
Java 数据库连接 Spring
Spring Boot常见企业开发场景应用、自动配置原理结构分析(二)
Spring Boot常见企业开发场景应用、自动配置原理结构分析
|
6月前
|
前端开发 Java 数据库连接
Spring Boot常见企业开发场景应用、自动配置原理结构分析(一)
Spring Boot常见企业开发场景应用、自动配置原理结构分析
328 0
|
6月前
|
存储 Java 测试技术
Spring 拾枝杂谈—Spring原生容器结构剖析(通俗易懂)
Spring 第一节 拾枝杂谈 分析Spring底层容器。
110 0
|
6月前
|
XML Java 程序员
spring 容器结构/机制debug分析和几个重要概念以及IOC 的开发模式
spring 容器结构/机制debug分析和几个重要概念以及IOC 的开发模式
84 0