Java
旧城灯火
这个作者很懒,什么都没留下…
展开
-
@RequestMapping/@Controller注解在哪里得到处理?
1 结论@RequestMapping/@Controller注解在实例化RequestMappingHandlerMapping的时候处理。先从ApplicationContext获取所有已注册Bean,然后依次判断是否包含这两个注解,如果是则把RequestMapping标注的method注册到RequestMappingHandlerMapping$MappingRegistry.mapp...原创 2020-01-28 22:20:05 · 595 阅读 · 0 评论 -
Spring源码解析——IoC部分(二)
首先我们关注一下Spring IoC容器的主要启动过程:Spring的ContextLoaderListener收到Tomcat容器启动完成的消息,初始化SpringIoC容器,开始执行refresh()。refresh()第2步(其他步骤先省略,下文会细说)会调用XmlBeanDefinitionReader读取Xml方式配置的BeanDefinition并注册,第5步会调用Be...原创 2019-03-05 23:24:21 · 153 阅读 · 0 评论 -
Spring源码解析——IoC部分(一)
1 概述 IoC的意义在于它优雅地解决了类之间的复杂依赖关系,依赖对象的获得方式被反转,对象不必主动去获取被依赖的对象,容器会在适当的时机主动把被依赖对象交到对象手中,通过一种叫做依赖注入的方式。 根据《Spring技术内幕》的介绍,IoC的两个核心接口是BeanFactory和ApplicationContext,它们的操作对象Bean被抽象成BeanDef...原创 2019-03-07 23:13:54 · 222 阅读 · 0 评论 -
Spring源码解析——IoC部分(三)
在本系列的前两篇文章里面我们详细分析了Spring 容器的Bean信息存入过程,这一篇我们来看看依赖注入过程的源码。Bean的依赖注入实际发生在创建Bean时,创建Bean发生在第一次向容器索取Bean时,创建Bean会有解决循环依赖的措施,还会涉及到CGLIB。本文分2个大的部分:Bean创建与依赖注入和CGLIB实例化Bean。1 Bean创建与依赖注入1.1 获取Be...原创 2019-03-23 00:13:24 · 121 阅读 · 0 评论 -
读书笔记:《Netty进阶之路》——netty缓冲区、缓冲区释放、内存池
第3章提出问题:“缓冲区未正确释放导致Netty内存池泄露”,引出Netty内存管理方式介绍;第4张提出问题:“ByteBuf使用不当导致报错、程序无法正常运行”,引出ByteBuf的使用方式和原理。我颠倒一下顺序,先回顾ByteBuf的正确使用和实现原理,后回顾Netty内存池技术。1 Netty缓冲区——ByteBuf Netty的ByteBuf是一个抽象类,是Netty管辖的内存,...原创 2019-06-13 00:00:34 · 5019 阅读 · 0 评论 -
读书笔记:《Netty进阶之路》——Netty服务端、Netty客户端、优雅关闭
1 Netty服务端 第一章提出“Netty作为服务端启动时偶尔会有服务端意外退出的现象”的问题。原因:Netty作为服务端启动,为了防止服务端意外退出,应该防止EventLoopGroup意外关闭,因为EventLoopGroup是非守护线程,只要它没有退出,则JVM不会关闭。 若启动线程是main线程,且优雅关闭作业也在main线程,则启动完成后需要阻塞线程,否则finally块会关闭...原创 2019-06-10 23:44:13 · 3061 阅读 · 0 评论 -
读书笔记:《Netty进阶之路》——消息发送机制、消息接收时的内存申请机制
《Netty进阶之路》第5章、第6章分别提出两个问题:消息发送时没有限流造成消息积压,内存飙升;消息接收时没有注意正确的内存申请,导致内存和CPU占用不稳定。1 消息发送机制 Netty的消息发送前判断当前线程是否Netty NIOEventLoopLoop线程,如果是则直接执行写,否则封装成WriteTask添加到NIOEventLoopLoop的任务队列中执行写,这样做的好处是把IO操作...原创 2019-06-23 23:53:50 · 341 阅读 · 0 评论