
源码分析
文章平均质量分 87
nuomizhende45
这个作者很懒,什么都没留下…
展开
-
Spring自定义扩展标签NamespaceHandler
Spring自定义扩展NamespaceHandler–自定义标签在很多情况下,我们需要为系统提供可配置化支持,简单的做法可以直接基于Spring的标准Bean来配置,但配置较为复杂或者需要更多丰富控制的 时候,会显得非常笨拙。一般的做法会用原生态的方式去解析定义好的xml文件,然后转化为配置对象,这种方式当然可以解决所有问题,但实现起来比较繁琐, 特别是是在配置非常复杂的时候,解析工作是一个不得不考虑的负担。Spring提供了可扩展Schema的支持,这是一个不错的折中方案,完成一个自定义 配置一般需要转载 2021-04-13 20:38:21 · 381 阅读 · 0 评论 -
JAVA并发基础, 从源码分析清楚AbstractQueuedSynchronizer
在日常开发的过程中,java.util.concurrent(J.U.C)是我们在并发编程中用的最多的,如果我们想熟练的掌握JAVA并发基础,少不了需要了解 AbstractQueuedSynchronizer(以下简写AQS)这个抽象类,因为它是 Java 并发包的基础工具类,是实现 ReentrantLock、CountDownLatch、Semaphore、FutureTask 等类的基础。当然这篇文章是我自己对AQS的理解,有错误之处,请评论区留言交流。AbstractQueuedSy..原创 2020-05-23 19:44:23 · 923 阅读 · 1 评论 -
Closeable接口优雅方便的自动关闭资源
Closeable接口继承于AutoCloseable,主要的作用就是自动的关闭资源,其中close()方法是关闭流并且释放与其相关的任何方法,如果流已被关闭,那么调用此方法没有效果,像InputStream和OutputStream类都实现了该接口,源码如下/* * Copyright (c) 2003, 2013, Oracle and/or its affiliates...原创 2020-05-05 11:13:52 · 6242 阅读 · 0 评论 -
SpringMVC源码分析(四)——————SpingMVC处理Http请求原理
四、SpingMVC处理Http请求原理当一个http请求过来了首先经过的是DispatcherServlet这么一个前端控制器并调用了这个前端控制器的doService方法。这个方法最终我们发现它调用了doDispatcher这么一个方法。这就是SpringMVC处理http请求的入口了。 protected void doService(HttpServletRequest re...原创 2019-01-12 16:34:31 · 614 阅读 · 0 评论 -
SpringMVC源码分析(三)——————HTTP请求是如何与对应Handler的对应method映射的
三、HTTP请求是如何与对应Handler的对应method映射的从上面的分析已经知道了当初始化完成的时候context中所有的handlerMapping都被加载了,并且它们都存放在hadlerMappings这么一个List中并且被排序了。我们看看HandlerMapping的设计及类的结构关系如下:这里可以看到顶层的父接口就是HandlerMapping,进入这个类发现这个顶层接...原创 2019-01-12 16:33:30 · 863 阅读 · 0 评论 -
SpringMVC源码分析(二)—————DispatcherServlet初始化流程
二、接下来分析一下DispatcherServlet这个前端控制器的启动和初始化的整个过程通过前面分析已经知道了DispatcherServlet这个前端控制器是一个Servlet了,所以生命周期和普通的Servlet是差不多的,在一个Servlet初始化的时候都会调用该Servlet的init()方法。下面这个是DispatcherSerlvet父类HttpServletBean中的init...原创 2019-01-12 16:32:35 · 914 阅读 · 0 评论 -
SpringMVC源码分析(一)——————详解DispatcherServlet
一、对照这流程的第一步发起请求到前端控制器DispatcherServlet,首先看看DispatcherServlet这个类,为什么所有的请求能发给这个类,看下这个类的结构图:这里我们发现了这个DispatcherServlet通过继承FrameWorkServlet、HttpServletBean从而间接的继承了HttpServlet,所以说这个DispatcherServlet也是一...原创 2019-01-12 16:31:31 · 592 阅读 · 0 评论 -
SpringMVC请求流程原理深入理解(SpringMVC面试必备技能)
前言SpringMVC请求流程是在面试中经常被问到的一个问题,这个流程大家百度以下随便看一看都能把整个过程回答出来:第一步:发起请求到前端控制器(DispatcherServlet) 第二步:前端控制器请求HandlerMapping查找 Handler (可以根据xml配置、注解进行查找) 第三步:处理器映射器HandlerMapping向前端控制器返回Handler,Handle...原创 2019-01-06 17:52:47 · 2342 阅读 · 2 评论 -
深入理解@Autowired注解以及Spring加载Bean的机制
@Autowired注解在平时开发中用的非常的多,即自动装配,这些天碰到了一个与之相关的报错,所以打算深入理解其原理。首先看看它的定义如下:这里提一下它上面有三个元注解:1、@Target表示这个注解是作用在什么上,方法上还是类上还是参数上等等。2、@Rentention 可以理解为这个注解的生命周期,RententionPolicy.SOURCE、RententionPolicy....原创 2018-12-14 23:21:07 · 19515 阅读 · 8 评论 -
闲聊 “synchronized” 关键字
Synchronized使线程安全线程安全与非线程安全是使用多线程的时候都会遇到的经典的问题。我所理解的“非线程安全”也就是多个线程同时访问同一对象中的实例变量所产生一些脏读的现象。而线程安全就是以获得的实例变量的值都是经过同步处理的,从而不会产生脏读的现象。其中使结果线程安全的最简单的方法就是加上一个重量级的锁,用synchronized关键字进行修饰。以下这种情况将会出现非线程安全的情...原创 2018-11-05 23:06:29 · 310 阅读 · 0 评论 -
SpringAOP深入了解之jdk动态代理与CGlib
目录理解AOPSpringAOP中的一些术语实现方式之JDK的动态代理实现方式之CGlib动态代理 JDK动态代理与CGlib代理的区别理解AOP一般我们编写程序的思想是纵向的,也就是一个方法代码从该方法第一行开始往下一步一步走,直到走完最后一行代码。也就是说很多业务都需要的比如用户鉴权,资源释放等我们都要在每个方法里面重复再去调用,如下所示:public voi...原创 2018-10-24 21:11:30 · 732 阅读 · 0 评论 -
关于java设计模式的模板方法模式与钩子方法
今天又看了一把Spring IOC的源代码,看到refresh这个核心方法的时候,发现其中调用了一个onRefresh方法,跟进一看发现里面什么实现都没有。什么钩子方法与钩子方法的作用:开始觉得很奇怪为什么会这样,后面才知道原来是自己孤陋寡闻了。所谓钩子方法是对于抽象方法或者接口中定义的方法的一个空实现,比如说有一个接口,这个接口中定义了很多个方法,而你想实现其中某一个方法,这个时...原创 2018-07-29 00:13:45 · 1549 阅读 · 0 评论 -
最详细的Spring核心IOC的源码分析(每次看都有不同的感悟)
原文转自 : https://javadoop.com/post/spring-iocSpring 最重要的概念是 IOC 和 AOP,本篇文章其实就是要带领大家来分析下 Spring 的 IOC 容器。既然大家平时都要用到 Spring,怎么可以不好好了解 Spring 呢?阅读本文并不能让你成为 Spring 专家,不过一定有助于大家理解 Spring 的很多概念,帮助大家排查应用中和...转载 2018-07-23 19:07:53 · 171510 阅读 · 83 评论