![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
源码分析
文章平均质量分 91
源码分析
又菜又爱玩٩( ö̆ ) و
人菜就要多学习
展开
-
Mybatis整合Spring源码分析
一、整合配置POM<!-- mybatis框架 --><dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.3</version></dependency><!--mybatis-spring适配器 --><dependency>原创 2021-12-17 17:16:15 · 491 阅读 · 0 评论 -
Mybatis执行过程源码解析
//使用Mybatis执行查询sql代码示例 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build( Resources.getResourceAsReader("mybatis-config.xml")); SqlSession sqlSession = sqlSessionFactory.openSession(); User user = (User)sql..原创 2021-12-16 13:38:01 · 362 阅读 · 0 评论 -
BlockingQueue底层原理以及AQS源代码解析
BlockingQueue特征队列是一种存储数据的数据结构,符合先进先出(FIFO)的原则。阻塞队列BlockingQueue是Java.concurrent.util包下的并发容器,除了符合队列的特点之外,还是线程安全的,保证在一个JVM中同一时刻只会有一个线程进行入队和出队操作。适用于解决并发生产者 - 消费者问题,在源代码的注释中有生产-消费示例: class Producer implements Runnable { private final BlockingQueue queue原创 2021-12-09 15:26:44 · 883 阅读 · 0 评论 -
ReentrantLock底层原理以及AQS源代码解析
使用ReentrantLock进行同步ReentrantLock lock = new ReentrantLock(false);//创建lock实例,false为非公平锁,true为公平锁 lock.lock() //加锁 lock.unlock() //解锁ReentrantLock是一种类似synchronized的互斥锁;需要手动加锁与解锁(显式锁);支持公平锁与非公平锁;可重入。 基于AQS框架的应用实现,通过定义内部类Sync来实现AbstractQueuedSynchronizer(原创 2021-12-08 16:08:27 · 758 阅读 · 1 评论 -
Spring MVC 执行流程源码解析
执行流程流程1.客户端发送请求request到DispatcherServlet2.DispatcherServlet根据请求url去HandlerMapping查找处理器handler,HandlerMapping会返回处理器执行链HandlerExecutionChain(其中包括拦截器和处理器)3.DispatcherServlet通过handler去获取支持的处理器适配器HandlerAdapter4.DispatcherServlet通过HandlerAdapter去执行处理器handl原创 2021-11-28 22:21:24 · 354 阅读 · 0 评论 -
SpringBoot启动原理源码解析
jar运行SpringBoot应用spring-boot-maven-pluginjava -jar启动,首先需要配置一个插件,该插件会:在打包时帮我们编写MANIFEST.MF文件;把项目所依赖的jar包也都打包到jar中,成为fat jar。<!-- pom.xml文件中默认使用该插件进行打包 --><build> <plugins> <plugin> <groupId>org.s原创 2021-11-25 17:36:01 · 592 阅读 · 0 评论 -
SpringBoot自动配置原理源码解析
自动配置原理DeferredImportSelectorSpring集成外部框架Spring集成其他框架,一般都是通过注解@EnableXXX的方式,在@EnableXXX注解中会有@Import注解,@Import导入的Bean(有3种方式:@Import({ 类名.class , 类名.class… });ImportSelector;ImportBeanDefinitionRegistrar)其实就是集成框架的关键Bean。自定义配置类如果项目中已经有默认的组件A配置(通过@Import),原创 2021-11-24 17:38:43 · 510 阅读 · 0 评论 -
SpringSecurity(二)认证流程
认证流程1.UsernamePasswordAuthenticationFilter的父类AbstractAuthenticationProcessingFilter,它的doFilter方法中authResult = attemptAuthentication(request, response); 触发了子类的attemptAuthentication方法;2.用户提交的用户名、密码被SecurityFilterChain中的 UsernamePasswordAuthenticationFilte原创 2021-07-01 17:47:44 · 173 阅读 · 2 评论 -
SpringSecurity(三)授权流程
授权流程1、拦截请求,已认证用户访问受保护的web资源将被SecurityFilterChain中(实现类为DefaultSecurityFilterChain)的 FilterSecurityInterceptor 的子类拦截。FilterSecurityInterceptor: public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOExcept原创 2021-07-02 11:40:00 · 251 阅读 · 0 评论 -
Spring Bean循环依赖源码解析
循环依赖所谓的循环依赖是指,A 依赖 B,B 又依赖 A,它们之间形成了循环依赖。Spring解决循环依赖Spring通过三级缓存的方式来解决循环依赖的问题。DefaultSingletonBeanRegistry类中的三个缓存变量/** 一级缓存:单例缓存池,用于保存所有的单实例bean */private final Map<String, Object> singletonObjects = new ConcurrentHashMap<>(256);/** 三级缓原创 2021-11-23 16:26:49 · 508 阅读 · 0 评论 -
Spring IOC容器加载过程源码
一、IOC容器加载过程实例化容器入口// 加载spring上下文,同时传入自己的配置类ConfigAnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(Config.class);从AnnotationConfigApplicationContext构造方法作为切入点:public AnnotationConfigApplicationContext(Class<?>..原创 2021-11-18 17:42:10 · 704 阅读 · 0 评论 -
Spring事务原理源码级解析
一、开启事务1.@EnableTransactionManagement通过@EnableTransactionManagement注解开启事务,@Import注解可以为容器中导入组件TransactionManagementConfigurationSelector@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Import(TransactionManagementConfigurationSel原创 2021-11-17 17:41:54 · 432 阅读 · 0 评论 -
Spring AOP原理源码级解析
1.AOP核心接口AnnotationAwareAspectJAutoProxyCreator1.1查找核心接口1.Spring通过注解**@EnableAspectJAutoProxy**开启aop切面功能:其中有**@Import(AspectJAutoProxyRegistrar.class)**,把AspectJAutoProxyRegistrar实例加入IOC容器中;@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)原创 2021-11-16 13:57:17 · 429 阅读 · 0 评论 -
Rocket核心流程源码分析
一、源码环境搭建1.源码拉取RocketMQ的官网源码地址:http://rocketmq.apache.org/dowloading/releases/RocketMQ的官方Git仓库地址:https://github.com/apache/rocketmq/本文以4.7.1版本为例进行分析,下载完成后,需要对其进行编译:mvn clean install -Dmaven.test.skip=true代码结构如下:2.源码启动2.0 修改配置文件先在项目目录下创建一个conf目录,并原创 2021-08-08 22:58:44 · 690 阅读 · 0 评论