死磕Spring源码系列

一、Spring总体架构

1.架构图

2.SpringIOC:核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转(IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。

3.SpringAOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。

4.SpringMVC:MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。

5.SpringJDBC:

6.SpringORM:Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。

7.Spring远端调用:

8.Spring事务管理:

9.Spring应用:最顶层应用,面向应用开发者。

10.Spring上下文:Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。

二、SpringIOC容器

1.BeanFactory家族

1.1BeanFactory

可访问spring容器的根接口,是bean容器的最基本的形态,这个接口是由包含许多bean定义的对象实现的,*每一个都由字符串名唯一标识。

根据bean的定义,*工厂将返回所包含对象的独立实例。

1.2HierarchicalBeanFactory

可分级的BeanFactory,允许将父类设置为可配置的。

1.3ApplicationContext

应用程序上下文,应用程序提供配置的核心接口。

1.4WebApplicationContext

web应用程序提供配置的接口,getServletContext()方法获取全局应用程序共享对象(ServletContext上下文)。

1.5ConfigurableWebApplicationContext

可配置的web应用程序上下文实现的接口,是WebApplicationContext接口的强化版

1.6AbstractRefreshableWebApplicationContext

AbstractRefreshableWebApplicationContext抽象类中并没有太多的操作,更多的是一些get和set操作

1.7XmlWebApplicationContext

web环境下spring容器的最高级形态。

2.IOC容器的初始化

3.IOC容器的DI

4.其他

三、SpringAOP

1.资源定位Resource

2.类的定义BeanDefinition

原文地址:https://www.cnblogs.com/liandy001/p/11223654.html

时间: 2024-08-05 14:56:39

死磕Spring源码系列的相关文章

AOP执行增强-Spring 源码系列(5)

AOP增强实现-Spring 源码系列(5) 目录: Ioc容器beanDefinition-Spring 源码(1) Ioc容器依赖注入-Spring 源码(2) Ioc容器BeanPostProcessor-Spring 源码(3) 事件机制-Spring 源码(4) AOP执行增强-Spring 源码系列(5) AOP的核心就是个动态代理,Spring进行了大量抽象和封装形成一个方便上层使用的基础模块. 而动态代理的两种实现都在上一篇中提供了代码 直接ProxyFactoryBean入手来

死磕Tomcat7源码之二:web组件初始化

经过死磕Tomcat7源码之一:解析web.xml,已经知道webapp的配置信息是如何解析到内存中.接下来,就是如何将对应的组件对象初始化化.分析所有的组件初始化过程,根本不可能.本文重点针对阐明3个主要组件的初始化过程,分别是:servlet,listener,filter.通过本文,你可以掌握以下知识点 了解组件初始化调用序列 组件servlet,listener,filter组件的初始化顺序 listener的初始化过程 servlet的初始化过程 filter的初始化过程 1.组件初始

Spring源码系列 — BeanDefinition扩展点

前言 前文介绍了Spring Bean的生命周期,也算是XML IOC系列的完结.但是Spring的博大精深,还有很多盲点需要摸索.整合前面的系列文章,从Resource到BeanDefinition,再到容器扩展点,最后到Bean创键,这个过程中无处不存在Spring预留的扩展口. 本篇文章介绍Spring的另一种扩展点:BeanDefinition扩展点,该扩展点是为处理BeanDefinition而设计.本文主要从以下几点分析: BeanDefinition扩展点的几种方式 BeanDef

spring源码系列——spring循环引用

众所周知spring在默认单例的情况下是支持循环引用的 Appconfig.java类的代码 @Configurable@ComponentScan("com.shadow")public class Appconfig {}1234X.java类的代码 package com.shadow.service; import org.springframework.beans.factory.annotation.Autowired;import org.springframework.

Spring源码系列:BeanFactory的创建

Spring的Ioc容器其实就是一个bean的关系网,依赖于core,bean,context三个组件来构建的.在spring中最核心的就是对于bean的管理.而bean又依托于我们的容器.本文将从顶层分析一下spring中beanFactory的具体创建过程,为后续的bean的生命周期提供一个基础. BeanFactory的继承体系 图片描述(最多50字) 从上图可以看到,BeanFactory有三个子类:ListableBeanFactoryHierarchicalBeanFactoryAu

【死磕jeestie源码】类型后面三个点(String...)和数组(String[])的区别

类型后面三个点(String...),是从Java 5开始,Java语言对方法参数支持一种新写法,叫可变长度参数列表,其语法就是类型后跟...,表示此处接受的参数为0到多个Object类型的对象,或者是一个Object[]. 例如我们有一个方法叫做test(String...strings),那么你还可以写方法test(),但你不能写test(String[] strings),这样会出编译错误,系统提示出现重复的方法. 在使用的时候,对于test(String...strings),你可以直接

死磕JDK源码之LinkedList

LinkedList LinkedList底层是基于双向链表实现的 内置插入删除方法 linkFirst & linkLast unlinkFirst & unlinkLast linkBefore unlink 源码分析 1 package java.util; 2 import java.util.function.Consumer; 3 public class LinkedList<E> extends AbstractSequentialList<E> i

死磕itchat源码--config.py

itchat的配置文件,源码: import os, platform # 版本及微信的url,二维码等 VERSION = '1.3.10' BASE_URL = 'https://login.weixin.qq.com' OS = platform.system() # Windows, Linux, Darwin DIR = os.getcwd() DEFAULT_QR = 'QR.png' TIMEOUT = (10, 60) # 代理配置 USER_AGENT = 'Mozilla/5

死磕itchat源码--core.py

core.py文件中的Core类定义了itchat的所有接口.且,仅仅是定义了接口,全部在component包中实现重构.其用法如下表述: 缺省 源码如下: # -*- encoding: utf-8 -*- import logging import requests from . import config, storage, utils, log from .components import load_components class Core(object): """