插件允许对Mybatis的四大对象(Executor、ParameterHandler、ResultSetHandler、StatementHandler)进行拦截 问题 Mybatis插件的注册顺序与调用顺序的关系? 使用 在讲源码之前,先看看如何自定义插件。 mybatis-demo,官方文档 创建插件类 自定义插件类需要实现Interceptor // 注解配置需要拦截的类以及方法 @Intercepts({ @Signature(type = StatementHandler.class, method =…

2022年6月16日 0条评论 311点热度 0人点赞 王谷雨 阅读全文

问题 Mybatis四大对象的创建顺序? Mybatis插件的执行顺序? 工程创建 环境:Mybatis(3.5.9) mybatis-demo,参考官方文档 简单示例 这里只放出main方法的示例,其余类请看demo工程。 public static void main(String[] args) throws Exception { // 配置文件路径 String resource = "mybatis-config.xml"; InputStream inputStream = Resources.get…

2022年6月16日 0条评论 386点热度 0人点赞 王谷雨 阅读全文

读写Channel(READ)的创建和注册 在NioEventLoop#run中提到,当有IO事件时,会调用processSelectedKeys方法来处理。 当客户端连接服务端,会触发服务端的ACCEPT事件,创建负责READ事件的channel并注册到workerGroup中 跟踪processSelectedKeys的调用 NioEventLoop#processSelectedKeys() --> NioEventLoop#processSelectedKeysOptimized() --> N…

2022年6月16日 0条评论 325点热度 0人点赞 王谷雨 阅读全文

先看看EventLoop类图 我们在Netty第二篇文章中的代码中,看到有多次用到eventLoop.execute()方法,这个方法就是EventLoop开启线程执行任务的关键,跟踪进去看看 // 类SingleThreadEventExecutor SingleThreadEventExecutor#execute(Runnable task) --> SingleThreadEventExecutor#execute0(@Schedule Runnable task) --> private vo…

2022年6月16日 0条评论 353点热度 1人点赞 王谷雨 阅读全文

简单Echo案例 注释版代码地址:netty 代码是netty的源码,我添加了自己理解的中文注释。 了解了Netty的线程模型和组件之后,我们先看看如何写一个简单的Echo案例,后续的源码讲解都基于此案例。以下是服务端的代码: public final class MyEchoServer { static final int PORT = Integer.parseInt(System.getProperty("port", "8007")); public static …

2022年6月16日 0条评论 277点热度 0人点赞 王谷雨 阅读全文

前置条件 源码版本netty4.1 了解Java NIO、Reactor模型和Netty的基本使用。 解释一下: Java NIO:了解BIO和NIO的区别以及Java NIO基础API的使用 Reactor模型:Netty是基于Netty模型对Java NIO封装的框架 Netty的基本使用:先学会基本使用再看源码,这样可以带着看源码,事半功倍(这个api为啥这么样设计,这个对象又是在什么时候生成的巴拉巴拉) Netty中的Reactor模型 Netty的线程模型参考了Reactor主从多线程模型,但又不完全一样…

2022年6月16日 0条评论 310点热度 0人点赞 王谷雨 阅读全文
12