《Spring源码深度解析》一

>>2020,微服务装逼指南

Spring整体架构

《Spring源码深度解析》一

1.1 Spring整体架构

1.1.1 Core Container:

模块:Core、Beans、Context和Expression Language

Core:框架的基础部分, 提供IOC 和依赖注入特性。也包含核心工具类。
基础概念是BeanFactory, 它提供对工厂模式的经典实现来消除对程序性单例模式的需要, 并真正地允许你从程序逻辑中分离出依赖关系和配置。

Bean:包含访问配置文件、创建和管理bean以及进行IoC/DI操作相关的所有类

Context:提供了一种类似于JNDI注册器的框架式的对象访问方法
ApplicationContext接口是Context模块的关键

Expression Language:提供了表达式语言
支持设置/获取属性的值,属性的分配,方法的调用,访问数组上下文(accessiong the context of arrays )、 容器和索引器 、逻辑和算术运算符、命名变量以及从Spring的IoC容器中根据名称检索对象 。它也支持list投影、选择和一般的list聚合。

1.1.2 Data Access/Integration

模块:JDBC、ORM、OXM、JMS和Transaction

JDBC:提供了JDBC抽象层

ORM:提供了交互层,如JPA/JDO/Hibernate/ibatis

OXM:提供了一个对Object/XML映射实现的抽象层,包括 JAXB、Castor、XMLBeans、JiBX和XStrearn

JMS:包含一些制造和消费信息和特性

Transaction:支持编程和声明性的事务管理

1.1.3 Web

模块:Web、Web-Servlet、Web-Structs(被弃用)和Web-Porlet

Web:提供了基础的面向Web的集成特性,如多文件上传、使用servlet listeners初始化IoC容器以及一个面向Web的应用上下文

Web-Servlet:MVC实现

Web-Porlet:提供了Porlet和Web-Servlet模块的MVC实现

1.1.4 AOP

模块:Aspect、Instrumentaion

Aspect:提供了对AspectJ的集成支持

Instrumentaion:提供了class instrumentation支持和classloader实现,使其可以在特定的应用服务器上使用

1.1.5 Test

支持使用JUnit和Test'NG对Spring组件进行测试

1.2 补充:

AspectJ神仙操作:

helloWorld示例:

《Spring源码深度解析》一

增加事务:

《Spring源码深度解析》一

编译:

《Spring源码深度解析》一

输出:

《Spring源码深度解析》一



原文始发于微信公众号(不止于Java):《Spring源码深度解析》一