- 博客(24)
- 收藏
- 关注
原创 Spring(八)核心容器 - Bean 创建过程
文章目录1、整体流程2、核心流程2.1 解析 FactoryBean2.2 从 createBean 开始2.2.1 创建 Bean 实例2.2.2 初始化 Bean 实例 - 属性注入2.2.3 初始化 Bean 实例 - 执行初始化方法(回调钩子接口)Spring 版本 5.0.7.RELEASE获取 Bean 的方法是 getBean,其来自 BeanFactory 继承的 Abst...
2020-03-24 23:55:18 348
原创 Spring(七)核心容器 - 钩子接口
文章目录前言1、Aware 系列接口2、InitializingBean3、BeanPostProcessor4、BeanFactoryPostProcessor5、ImportSelector6、ImportBeanDefinitionRegistrar7、FactoryBean8、ApplicationListener最后前言Spring 提供了非常多的扩展接口,官方将这些接口称之为钩子,...
2020-02-28 09:09:36 523 1
原创 Spring(六)核心容器 - 注册单例 Bean 实例、SingletonBeanRegistry 简介
前言上篇文章我们对注册 Bean 的核心类 BeanDefinitionRegistry 进行了讨论,这里的注册 Bean 是指保存 Bean 的相关信息,也就是将 Bean 定义成 BeanDefinition,然后放入容器中。除此之外,Spring 还提供一个统一操作单例 Bean 实例的类 SingletonBeanRegistry,通过该类可直接对单例 Bean 的实例进行存储、注册等操...
2020-02-13 09:54:34 301
原创 Spring(五)核心容器 - 注册 Bean、BeanDefinitionRegistry 简介
文章目录前言正文1、BeanDefinitionRegistry 简介2、registerBeanDefinition 方法注册 Bean最后前言上篇文章我们对 BeanDefinition 进行了讨论,BeanDefinition 是对 Bean 的定义,其保存了 Bean 的各种信息,如属性、构造方法参数、是否单例、是否延迟加载等。这里的注册 Bean 是指将 Bean 定义成 BeanD...
2020-02-11 22:33:34 396
原创 Spring(四)核心容器 - BeanDefinition 解析
前言在上篇文章中,我们讨论了 refresh 的前四个方法,主要是对 ApplicationContext 上下文启动做一些准备工作。原计划是对接下来的 invokeBeanFactoryPostProcessors 方法进行讨论,但该方法涉及 Spring 中一个非常重要的概念: BeanDefinition,所以,这里先对 BeanDefinition 进行讨论,这样也有利于完善 Sprin...
2020-02-04 23:24:33 186
原创 Spring(三)核心容器 - ApplicationContext 上下文启动准备
文章目录前言正文第一步:prepareRefresh第二步:obtainFreshBeanFactory第三步:prepareBeanFactory第四步:postProcessBeanFactory总结前言前面介绍了 Spring 容器的概念,其核心可归纳为两个类: BeanFactory 和 ApplicationContext,ApplicationContext 继承自 BeanFac...
2020-01-25 21:10:04 476 2
原创 Spring(二)核心容器 - 简介 、BeanFactory、ApplicationContext
文章目录前言1、容器简介2、容器的结构2.1 BeanFactory2.2 ApplicationContext2.2.1 ConfigurableApplicationContext2.2.2 WebApplicationContext2.3 差异对比3、ApplicationContext 准备启动4、总结前言在上篇文章中,和大家一起讨论了 Spring 的整体架构,其大致分为五个模块:核...
2020-01-20 08:22:44 326
原创 Spring(一)开篇
文章目录1、Spring 介绍2、Spring 框架的演变3、Spring 整体架构Core ContainerData Access/IntegrationWebAOPTest最后1、Spring 介绍在早期 J2EE 时代,开发一个应用程序非常繁琐,先不说对象的创建及管理,如其它数据库访问、提供 Web 服务等都需耗费我们大量时间。当时一位名为 Rod Johnson 的澳大利亚人率先对这...
2020-01-14 23:54:02 344
原创 SpringBoot(九)总结篇
时至今日,SpringBoot 系列文章也算是告一段落,回想起当初立flag的情景,仿佛还历历在目。用一个月时间学完 SpringBoot 并整理成文章?又定一些异想天开计划,当时这样想着。不过,虽然过程比较艰辛,但结局也还算完美,在最后一篇文章完成那一刻,心情却很平静,我想,大概是习以为常了吧。&n...
2020-01-07 23:26:52 215 1
原创 SpringBoot(八)Starter机制 - 自定义Starter
前言 最近在学习Spring Boot相关的课程,过程中以笔记的形式记录下来,方便以后回忆,同时也在这里和大家探讨探讨,文章中有漏的或者有补充的、错误的都希望大家能够及时提出来,本人在此先谢谢了!开始之前呢,希望大家带着几个问题去学习:1、SpringBoot Starter 是什么?2、这个功...
2020-01-01 18:48:15 284
原创 SpringBoot(七)嵌入式Web容器
文章目录前言1、起源2、容器启动流程解析2.1、获取应用类型2.2、容器启动流程3、加载 Web 容器工厂4、总结前言 最近在学习Spring Boot相关的课程,过程中以笔记的形式记录下来,方便以后回忆,同时也在这里和大家探讨探讨,文章中有漏的或者有补充的、错误的都希望大家能够及时提出来,本人在此先...
2019-12-28 17:05:04 494
原创 SpringBoot(六)外部化配置 - @ConfigurationProperties 、@EnableConfigurationProperties
文章目录3、外部化配置的核心3.2 @ConfigurationProperties3.2.1 注册 Properties 配置类3.2.2 绑定配置属性3.1.3 ConfigurationPropertiesAutoConfiguration4、总结3、外部化配置的核心 接着上一章,Spring ...
2019-12-21 11:16:59 380 1
原创 SpringBoot(五)外部化配置 - Environment、ConfigFileApplicationListener
文章目录前言1、起源2、外部化配置的资源类型3、外部化配置的核心3.1 Environment3.1.1、ConfigFileApplicationListener3.1.2、关联 SpringConfigurationPropertySources前言 最近在学习Spring Boot相关的课程,过...
2019-12-15 23:22:34 659
原创 SpringBoot(四)SpringApplication启动类运行阶段 - SpringApplicationRunListener 、ConfigurableApplicationContext
目录文章目录目录前言1、起源2、SpringApplication 运行阶段2.1 SpringApplicationRunListeners 结构2.1.1 SpringApplicationRunListener 事件和监听机制2.1.2 SimpleApplicationEventMulticaster 广播器2.2 ApplicationArguments 加载启动参数2.3 Confi...
2019-12-08 19:44:47 1795
原创 SpringBoot(三)SpringApplication启动类准备阶段 - ApplicationContextInitializer、ApplicationListener
文章目录前言1、起源2、SpringApplication 准备阶段2.1、推断 Web 应用类型2.2、加载应用上下文初始器```ApplicationContextInitializer```2.3、加载应用事件监听器(ApplicationListener)2.4、推断应用引导类3、SpringApplication 配置4、总结前言 &nb...
2019-11-29 22:12:47 916
原创 SpringBoot(二)自动装配正文 - @SpringBootApplication、@EnableAutoConfiguration
目录文章目录目录前言(一)起源(二)Spring Boot 自动装配实现@EnableAutoConfiguration 实现获取默认包扫描路径获取自动装配的组件自动装配的组件内部实现(三)总结前言 最近在学习Spring Boot相关的课程,过程中以笔记的形式记录下来,方便以后回忆,同时也在这里和...
2019-11-23 22:50:04 515
原创 SpringBoot(一)自动装配基础
目录文章目录目录前言(一)起源(二)Spring 模式注解1、装配方式 方式@ComponentScan 方式2、派生性(三)Spring @Enable 模块驱动1、Spring框架中@Enable实现方式基于注解驱动基于接口编程2、自定义@Enable模块实现基于注解驱动基于接口编程(四)Spring 条件装配(五)总结前言 &n...
2019-11-16 22:39:19 452
原创 Java8-lambda表达式和Stream流
最经在学习Java8的新特性,其中就涉及到了lambad表达式和Stream流,用过之后才发现以前需要多行代码才能搞定的功能,现在只需一行,非常的干净和整洁,但我感觉也有一个缺点,当比较复杂的功能用lambad实现后,出现问题后很难调试,特此,请诸位斟酌使用!(一)初体验public class Demo1 { public static void main(String[] a...
2019-07-30 08:29:27 707
原创 redis(二)
一、Redis主从复制1、什么是主从复制是用来建立一个和主数据库完全一样的数据库环境,称为从数据库,可实现高可用;主数据库一般是实时的业务数据库,从数据库的作用和使用场合一般有几个:作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作; 可在从数据库作备份、数据统计等工作,这样不影响主数据库的性能; 可以进行读写分离,master进行接收写操作,slave接收读的操作,...
2019-03-24 23:16:55 186
原创 redis(一)
在讲redis之前,我们先来简单的了解NoSqlNoSql:优点:去掉了关系数据库的"关系特性",易扩展,有非常高的读写性能 尤其大数据量下,灵活的数据模型(无需提前建立字段) 缺点: 没有统一的标准 层出不穷四大分类:一、键值对存储 =>redis 优势:查找速度比较快 劣势:存储数据缺少结构化二、列存储 优势:查找速度比较快 扩展性强 ...
2019-03-17 20:20:55 173
原创 JVM体系结构(类加载机制、内存结构、垃圾回收)
在上篇文章中我们稍微提了一下JVM,那在这篇文章中我们就来详细聊聊。在这里我推荐大家去阅读《Java Web技术内幕》这本书籍,这本书的内容还是不错的,有框架部分也有较为底层的部分,尤其是Java I/O、JVM以及中文编码这几大模块讲的很详细,大家有空可以去看一看。本篇文章也多处借用了书籍的内容。下面我们开始吧。 JVM的全称是Java Virtual Mac...
2018-10-07 18:44:40 443
原创 关于java语言的编译和解释
计算机不能直接理解高级语言,只能理解机器语言,所以得将高级语言翻译成机器语言,翻译的方式有两种:编译和解释,这两种方式只是翻译的时间不同。编译型语言:将编译型语言的程序编译成机器语言的文件。如exe文件,以后使用时不用重复翻译。直接使用编译的结果,所以效率高解释型语言:解释型语言执行程序的时候才翻译,每一个语句都是执行的时候才翻译。这样每执行一次就要翻译一次,效率低C语言是编译型语言,不...
2018-09-30 11:44:51 520
原创 ConcurrentHashMap源码解析
在上篇文章中我们讲解了HashMap的核心源码部分,但我们知道在并发环境下,HashMap会出现线程安全问题,HashMap的扩容操作会出现闭环现象,当调用get方法时,会出现死循环。所以,JDK给我们提供了另一个线程安全容器,ConcurrentHashMap。在本章中我们来详细探讨JDK 1.8中ConcurrentHashMap的核心方法,且为什么是线程安全的以及和JDK 1.8之前的又...
2018-09-29 22:17:58 189
原创 HashMap源码解析
以jdk1.8为例,HashMap是一个用于存储Key-Value键值对的集合,每一个键值对是一个Node(jdk1.7叫做Entry)。后台是用一个Node数组来存放数据,这个Node数组就是HashMap的主干。这里我们主要来分析HashMap的get和put方法。putpublic V put(K key, V value) { return putVal(hash...
2018-09-17 16:07:53 361
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人