自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

想当厨子的程序媛

勿在浮沙筑高台

  • 博客(402)
  • 资源 (2)

原创 3-(3) Spring之解析xml文件与BeanDefinition

Spring中有2个很重要的类,在分析Spring源码之前,我们先来了解几个Spring中的核心类。一、DefaultListableBeanFactory我们从上面的图中可以看出,XmlBeanFactory 继承自 DefaultListableBeanFactory,而DefaultListableBeanFactory是整个Bean 加载的核心部分,是Spring注册和加载 bean的默认实现,而对于 XmlBeanFactory 与 DefaultListableBeanFactory 不同

2020-09-13 10:54:59 26

原创 3-(2) Spring之ApplicationContext配置文件的方式

通常,我们有2种方式来利用Spring, 第一种方式是使用配置的方式,第二种方式是:注解的方式。配置方式-1BeanFactory bf = new XmlBeanFactory(new ClasswPthResource("test.xml"));配置方式-2ApplicationContext ac = new ClassPathXmlApplicationContext("text.xml");注解方式ApplicationContext applicationContex

2020-09-08 21:13:46 59

原创 2-Spring源码解析之默认标签的解析(1)

Spring中的标签包括【默认标签】和【自定义标签】两种。默认标签的解析是在 DefaultBeanDefinitionDocumentReader 类的 parseDefaultNamespace 方法中进行。我们先来看一下parseDefaultNamespace方法的具体实现。 private void parseDefaultElement(Element ele, BeanDefinitionParserDelegate delegate) { // 对 import 标签

2020-09-06 15:48:00 75

原创 28-Spring源码解析之事务(1)——事务初始化源码

Spring版本:<version>5.2.1.RELEASE</version>Spring中声明式事务让我们从复杂的事务处理中得到解脱,使我们再也不需要去处理获得连接、关闭连接、事务提交和事务回滚等操作,再也不需要在与事务相关的方法中处理大量的try...catch...finally代码。Spring中事务的使用虽然已经相对简单很多,但是,还是有很多的使用及配置...

2020-03-20 09:21:16 109

原创 27-Spring源码解析之AOP(6)

占坑

2020-03-20 09:20:11 81 1

原创 26-Spring源码解析之AOP(5)

占坑

2020-03-20 09:19:37 73 1

原创 25-Spring源码解析之AOP(4)——创建AOP代理(1)

Spring版本:<version>5.2.1.RELEASE</version>上一篇:24-Spring源码解析之AOP(3)——解析@Aspect获取增强器上一篇我们讲完了解析@Aspect注解并获取增强器的时机和如何获取增强器。在获取增强器后,就是开始对创建的Bean进行分析看其是否需要创建对应的AOP代理。那么本篇文章就开始讲解切面类(LogAspect...

2020-03-14 16:13:14 150 5

原创 【java】Object类详细分析

API中对Object的介绍 Class {@code Object} is the root of the class hierarchy.(类Object是类层次结构的根类) Every class has {@code Object} as a superclass. All objects,(每一个类都要将Object类作为父类) including arrays,

2020-03-14 08:54:55 1496 2

原创 24-Spring源码解析之AOP(3)——解析@Aspect获取增强器

Spring版本:<version>5.2.1.RELEASE</version>上一篇:23-Spring源码解析之AOP(2)——AnnotationAwareAspectJAutoProxyCreator类源码上一篇我们讲完了与AOP功能相关的四个问题中的两个问题: 【问题一】为什么在配置类中写了 @EnableAspectJAutoProxy注解,Spr...

2020-03-13 17:02:35 164 2

原创 23-Spring源码解析之AOP(2)——AnnotationAwareAspectJAutoProxyCreator类源码

Spring版本:<version>5.2.1.RELEASE</version>上一篇:22-Spring源码解析之AOP(1)——@EnableAspectJAutoProxy注解原理上一篇我们完成了@EnableAspectJAutoProxy注解的解析,@EnableAspectJAutoProxy注解就解析完成,解析的结果就是:将AnnotationAwa...

2020-03-12 12:20:31 101 3

原创 22-Spring源码解析之AOP(1)——@EnableAspectJAutoProxy注解原理

Spring版本:<version>5.2.1.RELEASE</version>目录一、`AOP`概览1. 例子1.1 创建用于拦截的`Bean`1.2 切面类1.3 配置类1.4 测试类1.5 测试结果二、 `@EnableAspectJAutoProxy`注解三、解析`@EnableAspectJAutoProxy`注解上一篇:21-Spring源码解析——I...

2020-03-11 20:24:22 167

原创 21-Spring源码解析——IOC容器创建与Bean生命周期总结

这是一个总结文章,将IOC容器创建与Bean生命周期的整个流程做一个大总结未完待续,先占坑!

2020-03-11 10:39:39 99 3

原创 20-Spring源码解析之DI依赖注入——@Autowire注解源码 与 populate 源码

Spring版本:<version>5.2.1.RELEASE</version>上一篇:19-Spring源码解析之Bean的生命周期(4)——initializeBean上一篇我们讲完了Bean的生命周期的整个流程,但是遗留了一个非常重要的问题,就是依赖注入(DI)问题。IOC的一个重点是在系统运行中,动态的向某个对象提供它需要的其他对象。这一点就是通过DI来...

2020-03-11 10:35:20 105

原创 19-Spring源码解析之Bean的生命周期(4)——initializeBean

Spring版本:<version>5.2.1.RELEASE</version>目录一、`initializeBean`二、【功能一】激活`Aware`方法1.1 `Aware`的例子1.1.1 定义普通的`Bean`1.1.2 定义`BeanFactoryAware`的实现类1.1.3 配置类1.1.4 测试类1.1.5 测试结果1.2 `invokeAwareM...

2020-03-10 16:38:55 95

原创 18-Spring源码解析之Bean的生命周期(3)——【doCreateBean】和【createBeanInstance】

Spring版本:<version>5.2.1.RELEASE</version>上一篇:17-Spring源码解析之Bean的生命周期(2)——【getSingleton】和【createBean】上一篇我们讲到了getSingleton方法调用createBean方法来准备创建Bean。通过上一篇文章,我们也了解到,createBean方法首先调用resolve...

2020-03-10 14:58:46 241

原创 17-Spring源码解析之Bean的生命周期(2)——【getSingleton】和【createBean】

Spring版本:<version>5.2.1.RELEASE</version>上一篇:16-Spring源码解析之Bean的生命周期(1)——doGetBean上一篇我们介绍了doGetBean包含的功能,在【功能八中】,doGetBean会根据Bean的scope类型进行Bean的加载。因为当前是Spring容器的创建,因此程序走到这一步的时候,创建的Bean...

2020-03-09 14:30:40 131

原创 16-Spring源码解析之Bean的生命周期(1)——doGetBean

Spring版本:<version>5.2.1.RELEASE</version>上一篇:15-Spring源码解析之refresh(8)——【finishBeanFactoryInitialization】本篇我们来解决上一篇中遗留的问题,即finishBeanFactoryInitialization中是如何通过getBean来创建Bean实例的。为了更好更清...

2020-03-08 17:34:15 112

原创 15-Spring源码解析之refresh(8)——【finishBeanFactoryInitialization】

Spring版本:<version>5.2.1.RELEASE</version>上一篇:14-Spring源码解析之refresh(7)——【onRefresh】和【registerListeners】上一篇,我们讲解了refresh方法中调用的第9个onRefresh方法和第10个registerListeners方法。接着本篇文章讲解refresh方法调用的第...

2020-03-07 18:46:05 115

原创 14-Spring源码解析之refresh(7)——【onRefresh】和【registerListeners】

上一篇: 13-Spring源码解析之refresh(6)——【initMessageSource】和【initApplicationEventMulticaster】上一篇,我们讲解了refresh方法的第7个initMessageSource和第8个initApplicationEventMulticaster方法。接着本篇文章讲解refresh方法中调用的第9个onRefresh方法和第1...

2020-03-07 17:47:03 165

原创 13-Spring源码解析之refresh(6)——【initMessageSource】和【initApplicationEventMulticaster】

上一篇:12-Spring源码解析之refresh(5)——registerBeanPostProcessors上一篇我们分析完了registerBeanPostProcessors,接下来,我们开始分析refresh中的第七个方法initMessageSource和第八个方法initApplicationEventMulticaster一、initMessageSource初始化Messa...

2020-03-06 20:45:10 103

原创 12-Spring源码解析之refresh(5)——registerBeanPostProcessors

Spring版本:<version>5.2.1.RELEASE</version>上一篇:11-Spring容器创建之refresh(4)——invokeBeanFactoryPostProcessors(2)上一篇,我们介绍完了S

2020-03-06 18:57:37 127

原创 11-Spring源码解析之refresh(4)——invokeBeanFactoryPostProcessors(2)

Spring版本:<version>5.2.1.RELEASE</version>上一篇:10-Spring容器创建之refresh(4)——invokeBeanFactoryPostProcessors(1)上一篇还遗留了两个问题,这两个问题非常重要invokeBeanDefinitionRegistryPostProcessors(currentRegis...

2020-03-04 21:35:16 99

原创 10-Spring源码解析之refresh(4)——invokeBeanFactoryPostProcessors(1)

上一篇:9-Spring容器创建之refresh(3)——【prepareBeanFactory】与【postProcessBeanFactory】上篇文章讲的是refresh方法中调用的第三个方法prepareBeanFactory和第四个方法postProcessBeanFactory,本篇文章我们来接着介绍refresh的第五个方法,也是非常重要的方法:invokeBeanFactory...

2020-03-04 12:25:46 157 2

原创 9-Spring源码解析之refresh(3)——【prepareBeanFactory】与【postProcessBeanFactory】

上一篇:8-Spring容器创建之refresh(2)——【prepareRefresh】与【ConfigurableListableBeanFactory】上一篇文章介绍玩了refresh方法中的前两个方法,本篇文章我们继续介绍refresh方法中的第三个方法prepareBeanFactory和第四个方法postProcessBeanFactory。1. prepareBeanFactor...

2020-03-03 17:37:40 130

原创 8-Spring源码解析之refresh(2)——【prepareRefresh】与【ConfigurableListableBeanFactory】

上一篇:Spring容器创建之refresh(1)——概览上一篇介绍了refresh方法的概览,其中包含12个方法,接下来我们就依照顺序依次聊一下每个方法所实现的功能以及如何实现的。这篇文章先介绍【prepareRefresh】与【ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory()】。1. prepare...

2020-03-02 20:40:31 115

原创 7-Spring源码解析之refresh(1)——概览

上一篇:Spring容器创建(3)——register注册配置类上一篇我们讲到执行完register()方法, public AnnotationConfigApplicationContext(Class<?>... annotatedClasses) { // 1. 首先初始化Spring的7个内置Bean后置处理器,并放到 DefaultListableBeanFacto...

2020-03-01 18:24:33 119

原创 Spring源码解析之【BeanFactory】与【BeanDefinitionRegistry】

在分析了Spring的源码之后发现,Spring里面用了很多的BeanFactory,这个类非常重要,因为实际上在Spring中BeanFactory是IOC容器的实际代表者,它用来创建和管理Bean。它为其他具体的IOC容器提供了最基本的规范,它是一个接口类型。BeanFactory是最典型的工厂方法模式。不同类型的工厂会生产不同类型的商品。它的子接口和对应的实现类结构如下:我们可以看到在...

2020-03-01 14:03:24 459

原创 6-Spring源码解析之register——register(annotatedClasses)注册配置类

上一篇我们讲到执行完this()方法 public AnnotationConfigApplicationContext(Class<?>... annotatedClasses) { // 1. 首先初始化Spring的7个内置Bean后置处理器,并放到 DefaultListableBeanFactory 类型的对象 beanFactory 中 // 2. 创建Sprin...

2020-02-29 21:08:32 351

原创 5-Spring源码解析之this()(2)——ClassPathBeanDefinitionScanner

上一篇我们讲到 private final AnnotatedBeanDefinitionReader reader; public AnnotationConfigApplicationContext() { // 步骤1:获取Spring7个内置处理器 this.reader = new AnnotatedBeanDefinitionReader(this); // 步骤2:获...

2020-02-29 15:56:23 105

原创 4-Spring源码解析之this()(1)——AnnotatedBeanDefinitionReader

1. 程序入口AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfig.class);2. AnnotationConfigApplicationContext类有参构造器其中MainConfig类是自己写的配置类,我们从这一行代码来开始...

2020-02-29 13:44:49 214

原创 3-(1) Spring之AnnotationConfigApplicationContext的2种构造方法

1. 举个栗子先给出一个小Demo1.1 POJO类import org.springframework.beans.factory.annotation.Value;public class Person { private String name; private Integer age; private String nickName; ...

2020-02-24 19:19:21 97

原创 2- @ComponentScan注解

1. @ComponentScan 注解在配置类中只要标注了@ComponentScan 注解,Spring就可以自动扫描Value对应的包了1.1. 配置类package com.spring.config;import com.spring.beans.Person;import org.springframework.context.annotation.Bean;import...

2020-02-23 20:46:48 123

原创 1-Maven创建一个的Spring项目(IDEA)

准备工作:首先电脑里需要有IDEA和Maven。1. 创建maven工程首先打开IDEA,然后开始new一个新的project,具体如下以上一个Maven的Spring项目就创建出来了,创建好的Spring项目的包结构如下com.spring.annotation包下只有一个APP.java文件是Spring的入口文件2. 导入Spring依赖创建好工程后,我们需要在pom中...

2020-02-23 20:04:10 187

原创 设计模式11——观察者模式

1. 定义当一个对象(被观察对象)被修改时,则会自动通知它的依赖对象。2. 类图3. 实现3.1 Subject 被观察者类package observer;import java.util.ArrayList;import java.util.List;public class Subject { private int state; public List...

2020-02-23 17:41:46 33

原创 设计模式10——装饰器模式

1. 定义“假如现在有一个块饼,如果只涂上黄油,其他什么都不加,就是煎饼。如果加一个鸡蛋,就是鸡蛋饼。如果再加上一根香肠,就变成一个香肠鸡蛋饼。不论是饼、煎饼、鸡蛋饼还是香肠鸡蛋饼,它们的核心都是饼。不过,经过涂上黄油,加上鸡蛋等装饰后,饼的味道变得更加甜美了,目的也变得更加明确了。程序中的对象与饼十分相似。首先有一个相当于饼的对象,然后像不断地装饰饼一样不断地对其增加功能,它就变成了使用目...

2020-01-16 14:53:07 57

原创 【Leetcode-Tree】104.二叉树的最大深度

1. 题目原址https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/submissions/2. 题目描述给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。3. 解题思路直接使用递归!4. AC代码/** * Definition ...

2019-11-24 20:19:13 65

原创 我的博客

这是第 364 篇博客,也坚持写了也算有一年半的博客了,最近的心得就是 坦然面对,放过自己,跟自己妥协然后收回拳头,为了更猛更准的打出下一拳博客,还是会坚持写,不为别的,这是我自己的宝藏.没有做给任何人看的宝藏....

2019-09-27 10:09:39 61

原创 git pull时产生'Merge branch 'master' of...问题

一、问题在使用 Git 的进行代码版本控制的时候,往往会发现在 log 中出现 “Merge branch ‘master’ of …” 这句话,如下图所示。日志中记录的一般为开发过程中对代码的改动信息,如果出现过多例如上述描述的信息会造成日志的污染。二、产生的原因当多人合作开发一个项目时,本地仓库落后于远程仓库是一个非常正常的事情,可参考下图具体情境如下:我当前拉取的远端版本为 B...

2019-07-22 21:41:13 3038 1

原创 【List-medium】24. Swap Nodes in Pairs 交换链表中相邻两个元素的位置

1. 题目原址https://leetcode.com/problems/swap-nodes-in-pairs/2. 题目描述3. 题目大意给定一个链表,交换链表中相邻两个元素的位置。即相邻的元素都要交换位置4. 解题思路定义一个ListNode节点作为头节点,然后用这个头节点连接给定链表的头。再定义两个ListNode节点,用来作为临时变量交换链表中的相邻两个节点。5. ...

2019-06-23 19:14:55 236

原创 【String-easy】824. Goat Latin 按照一定规则更改给定的字符串

1. 题目原址https://leetcode.com/problems/goat-latin/2. 题目描述3. 题目大意给定一个字符串,转换为Goat Latin格式,转换的规则如下:如果单词以元音开头,直接在单词后面添加 ma 即可。如果单词不以元音开头,先将第一个字母移到单词后面,添加 ma。从第一个单词开始,每个单词都加上若干个 a 的后缀,第一个单词加“a",第二个单...

2019-06-23 18:58:36 126

SSI框架总结|SSI.doc

文件包括一个一个简单的SSI框架,对于每部分的映射关系都做了详细的讲解与对应。

2015-12-19

SSI框架讲解

文件包括一个简单的SSI框架,对于每部分的映射关系都做了详细的讲解与对应。

2015-12-19

空空如也

空空如也
提示
确定要删除当前文章?
取消 删除