【源码Spring系列】
文章平均质量分 80
Mandy_i
科技让生活更美好,终身学习的践行者
展开
-
【源码Spring系列】——Bean的生命周期(上)
文章目录前言一、BeanFactory1.创建BeanFactory2.准备BeanFactory二、BeanDefinition总结前言本文主要是从源码的角度讲解Spring中bean的生命周期,主要讲解bean完整的初始化过程,文中不包含bean的销毁过程。下图绘制为bean在spring启动过程涉及到关键节点。以后的讲解主要围绕下图的流程展开。//样例代码public static void main(String[] args) { AnnotationConfigApplicat原创 2020-12-07 00:41:27 · 284 阅读 · 2 评论 -
【源码Spring系列】——手写模拟SpringIOC流程
之前的文章写过【源码Spring系列】——IOC设计理念以及自动装配原理本文主要利用总结的原理,手动模拟Spring启动流程。简单来说Spring启动就是两个步骤1、扫描2、创建非懒加载的单例bean原创 2020-11-23 00:31:02 · 207 阅读 · 0 评论 -
【源码Spring系列】——Spring中核心概念
BeanDefinitionSpring中定义bean的方式 @Bean @Component <bean/>还可以通过BeanDefinition来定义一个bean DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory(); //定义一个bean AbstractBeanDefinition beanDefinition = BeanDefinitionB.原创 2020-11-22 19:00:29 · 216 阅读 · 0 评论 -
【源码Spring系列】——bean的装配方式
之前的文章讲了FactoryBean本质也是普通的bean同样可以装配到Spring容器中,本质上也装配bean的一种方式。本文主要整理Spring中bean的装配方式以及实现的原理。图解Spring中bean的实例化流程下面主要讲解上图中装配的部分1、xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" ...原创 2020-07-26 21:42:48 · 235 阅读 · 0 评论 -
【Spring源码系列】——彻底搞懂FactoryBean
在上篇博客中【源码Spring系列】——彻底搞懂BeanFactory和FactoryBean不同讲解了两者的不同,先确定两者的作用并不一样,本文主要讲解Spring是怎样从FactoryBean获取我们自己创建的Bean实例。原创 2020-06-28 22:32:49 · 593 阅读 · 2 评论 -
【源码Spring系列】——彻底搞懂BeanFactory和FactoryBean不同
1、BeanFactoryBeanFactory定义了IOC容器的最基本形式,并提供了IOC容器应遵守的的最基本的接口,也就是SpringIOC所遵守的最底层和最基本的编程规范。在Spring代码中,BeanFactory只是个接口,并不是IOC容器的具体实现,但是Spring容器给出了很多种实现,如DefaultListableBeanFactory、XmlBeanFactoryFactoryBean是个Bean。在Spring中,所有的Bean都是...原创 2020-06-02 21:34:40 · 537 阅读 · 0 评论 -
【源码Spring系列】——IOC设计理念以及自动装配原理
凡是使用Spring的开发者都知道Spring中两大核心IOC和AOP,要问这两点,一般都会说IOC实现控制反转,AOP实现了面向切面编程。本文主要讲解IOC,所以深入提问IOC归根结底解决的是什么问题,通过何种方式实现,控制反转是从何方转向何处呢?IOC和DI有什么关系?没有IOC时,开发是什么样子?当项目比较庞大的时候,这种开发存在什么问题?1、上面案例中D会被重复创建2、对象创建过程引用其他类多的情况时,对象缺少管理3、从UML来讲,A 和 B、D的关系是组合关...原创 2020-05-23 20:25:51 · 818 阅读 · 2 评论 -
【源码Spring系列】——为什么学习Spring源码
最近学习了一句话,感觉自己的世界瞬间明朗,不再那么紧张焦虑恐慌,同样推荐给大家,希望我们都终有所得。 “如果一个人不是发自内心地想要做一件事情,那么,他是无法改变自己的人生的。” 同样这句话用在学习上依旧适用,作为Java语言从业者,很早之前就知道要学习Spring源码、要掌握Spring源码,当时的理由是因为Spring源码面试官要问,知道Spring源码,薪资可以要的更高。其实这些都是外部的理由,处于压力去掌握,去学习,一旦没有了找工作,涨薪的压力,那学习源码可能就抛之...原创 2020-05-23 16:46:10 · 1367 阅读 · 3 评论 -
分库分表——基本概念以及shardingJdbc和Mycat对比
1、什么是分库分表就是把原本存储于一个库的数据分块存储到多个库上,把原本存储于一个表的数据分块存储到多个表上。2、为什么分库分表数据库中的数据量不一定是可控的,在未进行分库分表的情况下,随着时间和业务的发展,库中的表会越来越多,表中的数据量也会越来越大,相应地,数据操作,增删改查的开销也会越来越大;另外,由于无法进行分布式式部署,而一台服务器的资源(CPU、磁盘、内存、IO等)是有限的...原创 2020-04-27 21:39:38 · 21829 阅读 · 2 评论 -
SpringBoot1.5.6集成Flyway
What? Flyway一款开源的数据库版本管理工具,它更倾向于规约优于配置的方式。Flyway可以独立于应用实现管理并跟踪数据库变更,支持数据库版本自动升级,并且有一套默认的规约,不需要复杂的配置,Migrations可以写成SQL脚本,也可以写在Java代码中,不仅支持Command Line和Java API,还支持Build构建工具和Spring Boot等,同时在分布式环...原创 2019-11-24 23:10:25 · 570 阅读 · 0 评论 -
SpringCloud——组件概览
何为微服务?一种架构风格,将单体应用划分为小型的服务单元,微服务之间使用Http的API进行资源访问与操作。微服务主要解决问题高性能独立性容易扩展便于管理状态监控与警报何为SpringCloud? SpringCloud各个项目是基于SpringBoot封装的,并且通过自动配置的方式将这些框架绑定到Spring的环境中,SpringCloud可以理解...原创 2019-03-17 23:19:31 · 332 阅读 · 1 评论 -
【定时任务】——Spring定时任务Scheduled
定时任务在日常开发过程中非常常见,而且在日常的项目开发中也有多种实现方式,而且做任务调度的框架有很多种,小编最近的感受,如果想真正使用好任务调度还是存在困难的,所以分步学习,逐个击破!在这篇文章小编主要写spring中Scheduled。spring定时任务设置有两种方式,注解和xml配置。推荐使用注解,在本文章也主要介绍注解方式配置。注解方式配置定时任务下面的步骤默认s...原创 2019-01-28 15:29:54 · 533 阅读 · 0 评论 -
springboot整合swagger
公司目前尚未提供在api文档,前后端分离的项目,需要后端手动维护api文档,来帮助前端完成正常的功能联调测试等工作。但是目前公司的项目,后端接口需要通过postman来完成,而且手动维护api文档,徒增后端开发人员的时间成本,而且手动维护出错概率大,会造成前后端时间成本增加。借鉴上家公司的方案,希望改善这一部分的不足。关于前后端分离项目,业内普遍采用...原创 2018-11-05 10:26:46 · 4785 阅读 · 0 评论 -
【Spring】——声明式事务配置详解
事务管理是企业级应用程序开发中必备技术,用来确保数据的完整性和一致性。本文主要讲解事务涉及到一些概念以及spring中事务的使用。如有理解偏颇之处,恳请各位大神指正,小编不胜感激!1、何为事务? 事务就是把一系列的动作当成一个独立的工作单元,这些动作要么全部完成,要么全部不起作用。就是把一系列的操作当成原子性去执行。事务四个属性ACID1、原子性(atomicity)事务是原子性操作...原创 2018-07-15 21:29:20 · 30883 阅读 · 10 评论 -
【Spring注解】——生命周期以及自动装配
本文主要讲解一下配合spring注解讲解spring中bean的生命周期和自动装配涉及到一些注解,如有理解偏颇之处,恳请各位大神指正。容器管理bean的生命周期bean的生命周期 bean创建——初始化——销毁过程--> Spring IOC容器实例化Bean--> 调用BeanPostProcessor的postProcessBeforeInitialization...原创 2018-07-14 17:54:51 · 1824 阅读 · 2 评论 -
【SpringMVC】——图解执行流程
springmvc执行流程执行流程1、用户发送请求到前端控制器DispatcherServlet2、DispatcherServlet收到请求调用处理映射器HandlerMapping3、处理映射器根据请求url找到具体的处理器,生成处理器执行链HandlerExecutionChain(包含处理器对象和处理器拦截器)返回给DispatcherServlet4、DispatcherServlet根...原创 2018-07-12 10:11:44 · 11967 阅读 · 6 评论 -
【Java】——自定义注解对参数进行校验、spring扫描自定义注解
前提 上篇博客中详细介绍自定义注解的使用,本文主要是对自定义注解的进一步深入。会使用CGLIb进行动态代理来完成对方法参数是否为空的判断,以及再spring中如何扫描自定义注解自定义注解对方法参数为空校验为什么要用动态代理?因为Java的反射拿不到参数的相关信息,对方法参数进行校验,肯定是要在方法执行前进行校验,所以就需要动态代理来完成。对真实的对象进行代理,让代理对象执行参数校验这一部分的...原创 2018-07-11 16:45:41 · 20086 阅读 · 1 评论 -
【Spring注解】——组件注册
本文将主要针对Spring注解,讲解在组件注册过程会用到一些注解,对于小编本身是基础的回顾和巩固,也希望能帮助到需要的朋友,讲解偏颇之处,还请各位大神指正,小编不胜感激。1、在容器中注册组件1.1@Configuration标注在类上,告诉spring这是一个配置类,代替spring的xml配置文件中<beans>。作用:配置spring容器(应用上下文)优点 1、使用纯...原创 2018-07-08 11:26:49 · 536 阅读 · 0 评论 -
Spring通过@Value给静态变量注入值
前提spring不允许/不支持把值注入到静态变量中,如 @Value("${smtpHost}") public static String smtpHost;在方法中获取的smtpHost则为null解决Spring支持set方法注入,可以利用非静态的setter方法注入静态常量。注意set方法不能有staticpublic static String smtpHost;@Val...原创 2018-03-27 16:53:04 · 12763 阅读 · 22 评论