自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 收藏
  • 关注

原创 SpringBoot 源码解析全集

本文只是纯源码分析文章,阅读者需要有Spring或者SpringBoot使用经验。

2023-12-15 09:14:14 687

原创 Mybatis & Mybatis Plus源码解析

Mybatis & Mybatis Plus源码解析

2023-10-18 14:42:38 186

原创 SpringBoot扩展篇:循环依赖源码链路

我们可以看到,如果当前bean被代理了,那么就会在AbstractAutoProxyCreator中缓存了当前bean对应的代理bean,那么三级缓存会返回代理bean,否则就会返回当前bean。从缓存中逐级获取,如果缓存中找到了对应的Bean,那么就会返回bean,getBean方法调用结束。否则,就会创建Bean,放入缓存,然后返回bean。一个bean只会缓存在一个缓存中,在加入到一个缓存的时候,会移除其他两个缓存。可以看到,三级缓存中存放的是ObjectFactory,函数式接口。

2024-03-25 08:31:03 914

原创 SpringBoot 源码解析7:Bean的创建② AbstractAutowireCapableBeanFactory#createBean

1.概述2. 单例Bean的创建3. createBean源码4. AbstractAutowireCapableBeanFactory#doCreateBean 源码5 实例化Bean - AbstractAutowireCapableBeanFactory#createBeanInstance6 推断构造器7. instantiateBean 实例化Bean8. AbstractAutowireCapableBeanFactory#initializeBean 初始化bean。

2024-03-11 12:22:08 1039

原创 SpringBoot扩展篇:Spring注入 @Autowired & @Resource

Autowired注入是由AutowiredAnnotationBeanPostProcessor完成的。@Resource注入是由CommonAnnotationBeanPostProcessor完成的。由于两种方式代码重复率太高,原理基本一致,下面我们主要以AutowiredAnnotationBeanPostProcessor源码分析为主。AutowiredAnnotationBeanPostProcessor负责属性、方法的注入。

2024-03-11 09:38:43 931

原创 @Configuration源码解析

SpringBoot注解Configuration原理

2024-03-04 20:59:58 929

原创 SpringBoot 源码解析6:Bean的创建① AbstractBeanFactory#doGetBean

Spring获取Bean

2024-02-20 11:54:53 841

原创 SpringBoot 基础概念:注册BeanDefinition

Spring注册BeanDefinition

2024-01-26 14:54:45 431

原创 SpringBoot 源码解析5:ConfigurationClassPostProcessor整体流程和@ComponentScan源码分析

SpringBoot源码解析,核心注解支持ConfigurationClassPostProcessor,@ComponentScan源码解析

2024-01-21 12:27:40 995

原创 SpringBoot 源码解析4:refresh 方法解析

SpringBoot 源码解析4:refresh 方法解析

2024-01-12 15:37:36 1175

原创 SpringBoot 源码解析3:事件监听器

SpringBoot监听器

2023-12-18 13:07:24 2226

原创 SpringBoot 源码解析2:启动流程

SpringBoot启动方式,这里就不多做说明了。

2023-12-16 14:19:51 2179

原创 SpringBoot 源码解析1:环境搭建

最简单的spring-web项目。

2023-12-16 14:10:52 1092

原创 SpringBoot 基础概念:SpringApplication#getSpringFactoriesInstances

获取到ClassLoader,通过ClassLoader加载到所有的META-INF/spring.factories文件资源。在解析spring.factories文件的过程中,第一次就将所有的spring.factories文件加载了,对classLoader进行了缓存,避免重复加载创建多个实例。参数:type的类名为key,也就是上图黄色的部分,真正实例化的类是上图中绿色的部分。args为构造方法中参数的值。在SpringBoot启动的过程中,spring.factories资源在一开始就被解析了。

2023-12-15 15:57:00 565

原创 Mybatis源码解析6:Mapper执行流程2-三个Handler

之前已经对 SimpleExecutor#doQuery。StatementHandler是对Statement进行处理,ParameterHandler是对参数的设置进行处理,ResultSetHandler是对Statement执行的结果集进行处理。

2023-12-11 13:09:02 45

原创 Mybatis源码解析7:拦截器Interceptor

在SqlSessionFactoryBuilder解析mybatis-config.xml的时候,会通过XmlConfigBuilder对plugin标签进行解析。遍历interceptor,调用plugin方法。而我们自定义的拦截器,一般都是通过Plugin#wrap对interceptor进行封装。创建RoutingStatementHandler,通过拦截器链进行插件化。

2023-12-11 10:57:55 197

原创 Mybatis源码解析5:Mapper执行流程1

创建MapperMethod对象,其中的方法签名MethodSignature解析了方法的信息,我们最常用的@Param注解就是在这个时候解析的–ParamNameResolver。这里又定义了一个localCache缓存,缓存中没有,就queryFromDatabase从数据库中查询。如果有缓存,就从缓存里面取;没有缓存,就从数据库查询,这里是委托SimpleExecutor查询。通过transaction获取连接对象,如果开启了日志,那么就创建代理对象,可打印日志。

2023-12-11 09:58:55 80

原创 Mybatis源码解析1:环境搭建

github老是打不开,直接贴代码吧。

2023-12-10 19:51:35 66

原创 Mybatis源码解析4:获取Session、Mapper

【代码】Mybatis源码解析5:获取Session、Mapper。

2023-12-07 17:47:24 137

原创 Mybatis源码解析3:注册Statement

if (parent!} else {mybatis-config.xml中配置如下:

2023-12-06 16:13:54 60

原创 Mybatis源码解析2:全局配置

【代码】Mybatis源码解析4:整体流程1-全局配置。

2023-12-06 16:08:35 53

原创 MybatisPlus源码解析4:租户拦截器

租户拦截器,实现数据隔离

2023-11-10 16:50:11 1024 2

原创 MybatisPlus源码解析3:元数据处理器-MetaObjectHandler

功能:MetaObjectHandler在insert和update的时候,对参数的属性进行填充,可以对数据库的通用字段(比如:创建人、创建时间、更新人和时间等)进行赋值操作。原理:MetaObjectHandler对参数的元数据进行处理。创建ParameterHandler -> 创建ParameterHandler -> 对传入的对象进行了参数的填充。

2023-11-01 15:06:53 361

原创 MybatisPlus源码解析5:insert如何生成主键

mp自定生成id策略

2023-11-01 11:13:26 237

原创 MybatisPlus源码解析1:mybatis-plus启动流程

具体实现如下:由于MapperScan注解被@Import(MapperScannerRegistrar.class)所标注,spring在创建beanFactory容器之后,会调用org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor#postProcessBeanDefinitionRegistry来实现beanDefinition的装配,其中就包括了@Import注解。

2023-10-18 14:41:30 319

原创 MybatisPlus源码解析2:mybatis-plus启动流程之Sql注入器-SqlInjector

负责注入sql的核心代码@OverrideClass<?// 循环注入自定义方法} else {获取Mapper接口的泛型,也就是User.class获取mapperRegistryCache, mapperRegistryCache缓存已注入CRUD的Mapper信息初始化table信息获取modelClass(也就是User.class)的所有方法,然后调用inject方法注入sql。

2023-10-18 14:40:34 408

原创 mybatis拦截器数据权限过滤

mybatis拦截器数据权限过滤

2022-03-06 12:39:07 2369

原创 spring-mybatis源码分析之spring如何获取到UserMapper实例的?

spring集成mybatis,spring是如何获取到UserMapper的

2022-03-05 14:41:40 506

原创 redis订阅发布

redis订阅发布1.项目结构2.pom.xml3.RedisConfig4.消息监听4.TestSendController5.MyApplication6.启动项目1.项目结构2.pom.xml <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId>

2020-06-05 15:47:17 147

原创 第三方qq登陆(支持扫码)

QQ第三方登录1 导包2 配置3 建包oauth2并扫描4 编写qqcontroller5 登录页面加入QQ登录6 修改hosts配置文件1 导包 <dependency> <groupId>net.gplatform</groupId> <artifactId>Sdk4J</artifactId> <version>2.0</version> </dependency>2 配置最好查看q

2020-05-23 11:11:21 1236

原创 jvm优化

1.JVM优化1.1什么是JVM与JVM的初次见面,是在我们Java SE课程的开始,讲解Java跨平台原理的时候.时隔多日,我们先来回顾一下.Java的广告语是,”编写一次,到处运行”,而它凭借的就是JVM(Java Virtual Machine).而对于不同的平台,Windows,Linux,Mac OS等,有具体不同的JVM版本.这些JVM屏蔽了平台的不同,提供了统一的运行环境,让Java代码无需考虑平台的差异,运行在相同的环境中.下图即Oracle官网下载JDK 8时所需要进行选择的页面

2020-05-23 11:09:48 273

原创 vue入门

一.什么是VUE渐进式的Javascript框架 MVVM(Model,View,ViewModel)模式二.VUE基本语法2.1 Vue的基本使用引用vue.js准备要挂载的标签创建vue对象,进行挂载 Title {{message}}2.2 el指定相应的挂载对象可以使用id,class,标签(建议使用id挂载)挂载后代表这个标签被vue接管2.3 datavue对象准备的数据这个数据发生变化后,用到它的view部分

2020-05-23 11:08:46 104

原创 单点登录介绍

1. 单点登录介绍(sso)单点登录SSO(Single Sign On)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任。单点登录在大型网站里使用得非常频繁,例如像阿里巴巴这样的网站,在网站的背后是成百上千的子系统,用户一次操作或交易可能涉及到几十个子系统的协作,如果每个子系统都需要用户认证,不仅用户会疯掉,各子系统也会为这种重复认证授权的逻辑搞疯掉。实现单点登录说到底就是要解决如何产生和存储那个信任。2. Cookie方式

2020-05-12 18:49:53 485

原创 kafka-demo

消息服务-stream-kafkaSpring Cloud Stream本质上就是整合了Spring Boot和Spring Integration,实现了一套轻量级的消息驱动的微服务框架。通过使用Spring Cloud Stream,可以有效地简化开发人员对消息中间件的使用复杂度,让系统开发人员可以有更多的精力关注于核心业务逻辑的处理。安装kafka添加链接描述创建消费者项目springcloud-kafka-consumerpom 文件如下:<?xml version="

2020-05-12 18:49:12 209

原创 代理模式

代理模式1、代理模式2、静态代理2.1定义接口2.2定义接口的实现类 RealSubject并实现该接口,重写方法--被代理对象2.3定义接口的实现类ProxySubject并实现该接口重写方法。自定义属性RealSubject,调用request方法,在这里进行增强2.4测试类2.5测试结果3、JDK动态代理3.1定义接口IUserDao3.2定义接口实现类,实现某接口,并重写该方法3.3测试类:(重点)3.4实现效果4、cglib动态代理4.1 创建被代理的类4.2 测试类:(重点)4.3 实现效果5、

2020-05-12 18:47:01 104

原创 SpringAOP的xml和注解两种实现方式

SpringAOP的xml和注解两种实现方式1、SpringAop的实现方案2、maven导包3、xml实现aop的方式3.1项目结构3.2 IUserService3.3 UserviceImpl3.4 TxManager3.4 重点:SpringTest-context.xml配置3.6 测试SpringTest3.7 打印结果4、全注解实现aop(通常使用)4.1项目结构4.2 IUserService4.3 UserviceImpl4.4 SpringTest-context.xml4.5 重点 T

2020-05-12 18:45:42 267

原创 MyBatis的Mapper接口动态代理原理

MyBatis的Mapper接口动态代理原理1、什么是mapper接口的动态代理创建sqlsession对象不使用动态代理使用动态接口代理2、mapper接口动态代理的代码实现2.1假定一个接口2.2使用java的动态代理方式,创建一个类2.3测试代码1、什么是mapper接口的动态代理创建sqlsession对象Reader reader = Resources.getResourceAsReader("mybatis-config.xml");sqlSessionFactory = new S

2020-05-12 18:44:59 371

原创 SpringBoot入门

SpringBoot入门1.导入maven包2.在resources根目录下配置application.propertie或者application.yml3.新建cn.itsource包,然后在写一个Application.java文件4.新建cn.itsource.model,并写一个实体类Country.java5.新建cn.itsource.mapper包并写CountryMapper.java6.早resources下面创建cn.itsource.mapper并创建映CountryMapper.x

2020-05-12 18:43:57 139

原创 关于Springcloud的RestTemplate使用服务名报异常java.net.UnknownHostException

关于Springcloud的RestTemplate使用服务名报异常java.net.UnknownHostException和使用localhost:8081报异常java.lang.IllegalStateException: No instances available for localhost问题1.关于java.lang.IllegalStateException: No instances available for localhost问题2.关于Springcloud的RestTemplat

2020-05-12 18:43:19 13977 6

原创 IDEA的springboot集成jsp找不到页面的解决方式

IDEA的springboot集成jsp找不到页面的解决方式1.方式一:IDEA配置步骤一:点击edit configurations...步骤2:点击Environment步骤3:点击working directory 选择第三个,然后点击apply,ok就能访问jsp页面2.方式二:添加一个配置文件1.方式一:IDEA配置步骤一:点击edit configurations…步骤2:点击Environment步骤3:点击working directory 选择第三个,然后点击apply,o

2020-05-12 18:41:53 1275

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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