java技术
文章平均质量分 85
xuguofeng2016
这个作者很懒,什么都没留下…
展开
-
zookeeper源码(01)集群启动
介绍zookeeper-3.5.7集群安装原创 2023-09-18 12:16:15 · 488 阅读 · 0 评论 -
Nacos源码 (6) Grpc概述与Nacos集成
Nacos 2.x版本增加了GRPC服务接口和客户端,极大的提升了Nacos的性能,本文将简单介绍grpc-java的使用方式以及Nacos中集成GRPC的方式原创 2023-09-18 11:50:49 · 1470 阅读 · 0 评论 -
Nacos源码 (5) Grpc服务端和客户端
Nacos 2.x在服务端与客户端直接增加了GRPC通信方式,本文通过2.0.2版本源码,简单分析GRPC通信方式:1.服务器启动,2.客户端连接;3.客户端心跳;4.服务器监控检查原创 2023-09-04 10:51:40 · 541 阅读 · 0 评论 -
Nacos源码 (4) 配置中心
本文阅读nacos-2.0.2的config源码,编写示例,分析推送配置、监听配置的原理。原创 2023-08-21 20:47:05 · 188 阅读 · 0 评论 -
Nacos源码 (3) 注册中心
本文将从一个服务注册示例入手,通过阅读2.0.2的版本nacos客户端、服务端源码,分析服务注册、服务发现原理。原创 2023-08-14 08:51:14 · 319 阅读 · 0 评论 -
Nacos源码 (2) 核心模块
介绍nacos的架构和主要模块原创 2023-08-07 09:58:44 · 402 阅读 · 0 评论 -
Nacos源码 (1) 源码编译及idea环境
本文介绍从gitee下载nacos源码,在本地编译,并导入idea进行本地调试原创 2023-07-31 16:31:11 · 1013 阅读 · 0 评论 -
spring启动流程 (6完结) springmvc启动流程
SpringMVC的启动入口在SpringServletContainerInitializer类,它是ServletContainerInitializer实现类(Servlet3.0新特性)。SpringMVC将大部分启动逻辑封装在了抽象WebApplicationInitializer中。本文将详细分析ServletContainerInitializer、SpringServletContainerInitializer和WebApplicationInitializer的工作流程。原创 2023-07-26 09:39:42 · 2222 阅读 · 0 评论 -
spring启动流程 (5) Autowired原理
本文将介绍三者Autowire:1. 构造方法参数Autowire、2. 字段和setter方法参数Autowire、3. @Bean方法参数Autowire原创 2023-07-17 12:10:54 · 247 阅读 · 0 评论 -
spring启动流程 (4) FactoryBean详解
实现类对象将被用作创建Bean实例的工厂,即调用getObject()方法返回的对象才是真正要使用的Bean实例,而不是直接将FactoryBean对象作为暴露的Bean实例,本文将简单介绍其实现方式。原创 2023-07-11 09:14:11 · 159 阅读 · 0 评论 -
spring启动流程 (3) BeanDefinition详解
BeanDefinition在Spring初始化阶段保存Bean的元数据信息,包括Class名称、Scope、构造方法参数、属性值等信息,本文将介绍一下BeanDefinition接口、重要的实现类,以及在Spring中的使用示例。原创 2023-07-04 08:17:23 · 779 阅读 · 0 评论 -
spring启动流程 (2) Bean实例化流程
Spring Bean实例化入口在AbstractApplicationContext类的finishBeanFactoryInitialization方法,本文将重点分析Bean实例化流程。原创 2023-07-02 14:55:36 · 167 阅读 · 0 评论 -
spring启动流程 (1) 流程概览
阅读AnnotationConfigApplicationContext源码,分析Spring启动流程。原创 2023-06-26 16:43:34 · 566 阅读 · 0 评论 -
springboot启动流程 (3) 自动装配
在SpringBoot中,EnableAutoConfiguration注解用于开启自动装配功能。本文将详细分析该注解的工作流程。原创 2023-06-21 12:11:27 · 747 阅读 · 0 评论 -
springboot启动流程 (2) 组件扫描
SpringBoot的组件扫描是基于Spring @ComponentScan注解实现的,该注解使用basePackages和basePackageClasses配置扫描的包,如果未配置这两个参数,Spring将扫描该配置类所属包下面的组件原创 2023-06-19 08:54:13 · 1206 阅读 · 0 评论 -
springboot启动流程 (1) 流程概览
本文将通过阅读源码方式分析SpringBoot应用的启动流程,不涉及Spring启动部分(有相应的文章介绍)。本文不会对各个流程做展开分析,后续会有文章介绍详细流程。原创 2023-06-15 09:00:39 · 777 阅读 · 0 评论 -
spring-transaction源码分析(5)TransactionInterceptor事务拦截逻辑
spring-tx的事务拦截逻辑在TransactionInterceptor类,本文将详细分析其实现方式。原创 2023-05-25 08:20:29 · 1065 阅读 · 0 评论 -
spring-transaction源码分析(4)AspectJ和spring-aspects模块
AspectJ是Java语言实现的一个面向切面编程的扩展库,能够基于一定的语法编写Aspect代码,使用ajc编译器将其编译成.class文件,之后在Java程序编写或加载时将Aspect逻辑嵌入到指定的切面。原创 2023-05-16 12:00:10 · 559 阅读 · 0 评论 -
spring-transaction源码分析(3)Transactional事务失效原因
在Transactional方法中使用this方式调用另一个Transactional方法时,拦截器无法拦截到被调用方法,严重时会使事务失效。原创 2023-05-11 09:50:09 · 399 阅读 · 0 评论 -
spring-transaction源码分析(2)EnableTransactionManagement注解
EnableTransactionManagement注解开启spring的注解驱动事务管理功能,通常标注在@Configuration类上面用于开启命令式事务管理或响应式事务管理。本文将详细介绍该注解的属性。原创 2023-05-06 10:22:15 · 697 阅读 · 0 评论 -
spring-transaction源码分析(1)概述和事务传播级别
spring-tx包使用注解驱动和AOP通知将事务开启、提交/回滚、以及复杂的传播机制封装了起来,开发者不再需要编写事务管理的代码,而是可以只关注自己的业务逻辑。本文将简单介绍spring-tx使用步骤以及七种事务传播级别。原创 2023-04-28 12:18:24 · 900 阅读 · 0 评论 -
Spring @Import注解源码分析
Import注解指示导入一个或多个组件类,可以是@Configuration、ImportSelector、ImportBeanDefinitionRegistrar或者其他常规组件。本文将通过阅读源码,分析Import注解的工作流程。原创 2023-04-14 12:57:53 · 253 阅读 · 0 评论 -
Spring AOP源码分析(深入原理)创建通知、切面匹配与创建代理
在之前的三篇文章中已经梳理了spring aop的核心内容:1. AnnotationAwareAspectJAutoProxyCreator的注入;2. AnnotationAwareAspectJAutoProxyCreator获取Advisor集、bean匹配、创建代理等;3. 切面拦截器的执行流程;但是由于时间和个人水平限制,有几个内容记录的不是很详细,比如:- 事件通知何时创建;- cglib代理的原理;- Pointcut如何匹配;本文将继续阅读spring aop源码,并结原创 2023-03-27 13:48:01 · 383 阅读 · 0 评论 -
Spring OpenFeign源码分析(4) Hytrix和Sentinel
Feign与Hytrix、Sentinel集成最大的不同在于使用不同的InvocationHandlerFactory工厂:1) 默认使用feign.InvocationHandlerFactory.Default;2) Hytrix、Sentinel分别有各自的InvocationHandlerFactory实现类;本文重点分析Hytrix、Sentinel的InvocationHandlerFactory和InvocationHandler实现逻辑。原创 2023-03-21 16:31:39 · 274 阅读 · 0 评论 -
Spring OpenFeign源码分析(3) 负载均衡与服务发现
在前文,我们了解到feign实现负载均衡需要两个重要的接口:1. ILoadBalancer - 管理可用的服务器集合,实现软负载均衡;2. IRule - 实现负载均衡算法;本文重点介绍这两个接口:1. 主要实现类;2. 注入方式:默认的实现类,可用的实现类;3. 实现类的算法原创 2023-03-18 13:22:07 · 871 阅读 · 0 评论 -
Spring OpenFeign源码分析(2) 接口代理执行流程
前文《OpenFeign源码01 接口扫描和创建代理》中分析了创建feign代理的流程,本文将从代理ReflectiveFeign.FeignInvocationHandler(实现了InvocationHandler接口)入手,分析feign client的执行流程:1. SynchronousMethodHandler类的invoke方法;2. 执行拦截器的逻辑并获取feign Request;3. LoadBalancer负载均衡逻辑;4. 发送请求;5. 响应解码原创 2023-03-13 11:16:33 · 409 阅读 · 0 评论 -
Spring OpenFeign源码分析(1) 接口扫描和创建代理
Feign是Spring Cloud做服务间调用的组件,基于@EnableFeignClients、@FeignClient、@RequestMapping等注解,能够将开发者编写的Client接口扫描到Spring容器,只要注入Client代理即可实现服务间调用。本系列文章通过阅读Feign的源码,深入分析其注册、执行流程。本文从EnableFeignClients注解入手,分析:1. 扫描Client接口,创建BeanDefinition的流程;2. 为Client接口创建代理的流程原创 2023-03-07 17:20:46 · 735 阅读 · 0 评论 -
SpringMVC DispatcherServlet源码(5) HttpMessageConverter扩展
通过一个对响应体进行加密、对请求体解密的示例,介绍一下自定义HttpMessageConverter的方式:1. 编写类实现HttpMessageConverter接口,read方法中先对请求体解密,之后在做json反序列化;2. write方法先做json序列化,之后再加密;3. 通过WebMvcConfigurer注册原创 2023-02-20 15:58:04 · 505 阅读 · 0 评论 -
JVM学习8: 字符串
常量与常量的拼接结果在常量池,原理是编译期优化只要其中有一个变量,结果就是在堆中创建对象,使用的是StringBuilder拼接如果拼接的结果调用了intern()方法,则将常量池中还没有的字符串对象放入池中,并返回此对象地址。原创 2023-02-16 08:07:00 · 338 阅读 · 0 评论 -
SpringMVC DispatcherServlet源码(1) 注册DispatcherServlet流程
通过阅读源码,分析Spring MVC和Spring Boot注册DispatcherServlet的流程原创 2023-01-15 14:24:25 · 747 阅读 · 0 评论 -
Spring @Conditional注解源码分析
通过阅读@Conditional注解、Condition接口、ConditionEvaluator类以及@ConditionalOnProperty(Spring Boot提供)注解源码,深入分析Spring Conditional的实现原理。原创 2023-01-09 08:18:14 · 731 阅读 · 0 评论 -
Spring @ComponentScan注解源码分析
本文将通过阅读spring源码,分析@ComponentScan注解扫描组件的原理。和@Bean注解一样,@ComponentScan注解也是通过ConfigurationClassPostProcessor后置处理器完成扫描工作的。原创 2023-01-04 20:31:26 · 429 阅读 · 0 评论 -
Spring @Bean注解源码分析
本文将通过阅读spring源码,分析@Bean注解导入Bean的原理。从AnnotationConfigApplicationContext对象的创建讲起,因为在创建他的过程中,spring会先注入一系列的处理器,使用这些处理器解析@Configuration Class进而将@Bean标注的方法转为BeanDefinition注入到容器。其他的ApplicationContext实现在原理上也是一致的,只是入口不同而已。原创 2022-12-14 22:06:13 · 849 阅读 · 0 评论 -
spring-aop源码分析(3)完结_执行流程分析
本文详细介绍Spring AOP的执行阶段流程。Cglib代理的代理拦截逻辑在DynamicAdvisedInterceptor中,JDK代理的拦截逻辑在JdkDynamicAopProxy中,本文将从这两个类入手分析Spring AOP的执行阶段流程。原创 2022-12-10 21:35:27 · 814 阅读 · 0 评论 -
spring-aop源码分析(2)_AnnotationAwareAspectJAutoProxyCreator后置处理器
通过阅读AnnotationAwareAspectJAutoProxyCreator后置处理器的源码,分析其解析AOP通知、匹配切入点和创建AOP代理的流程原创 2022-12-05 21:35:31 · 332 阅读 · 0 评论 -
spring-aop源码分析(1)_AnnotationAwareAspectJAutoProxyCreator的引入
本文从@EnableAspectJAutoProxy注解入手,阅读Spring AOP源码,分析一下AnnotationAwareAspectJAutoProxyCreator后置处理器是如何注入到spring中的。原创 2022-11-30 14:42:23 · 308 阅读 · 0 评论 -
spring-tx源码分析(4)_事务通知代理的创建
阅读spring InfrastructureAdvisorAutoProxyCreator类源码,分析spring事务通知的创建过程原创 2022-11-15 22:41:50 · 110 阅读 · 0 评论 -
spring-tx源码分析(3)_EnableTransactionManagement注解
本文将分析TransactionInterceptor类的源码,了解7种传播机制的实现方式。原创 2022-10-30 14:10:36 · 161 阅读 · 0 评论 -
spring-tx源码分析(2)_Import注解+ServiceLog进阶
在 spring-tx源码分析(1)_Import注解 中,了解到Import注解、PointcutAdvisor的基础使用,并且编写了一个ServiceLog的示例程序,本文将继续优化这个程序:支持指定包扫描,指定包下面被ServiceLog注解标注的方法才会进行拦截;兼容spring的原生aop原创 2022-09-29 15:05:19 · 177 阅读 · 0 评论 -
spring-tx源码分析(1)_Import注解
介绍一下EnableTransactionManagement和Import注解,还会编写一个Import示例程序,为后续的spring-tx源码分析做基础原创 2022-09-27 16:13:47 · 179 阅读 · 0 评论