源码学习
文章平均质量分 80
舞者H
策马前途须努力,莫学龙钟虚叹息
展开
-
从源码中学习动态代理模式
MapperProxy实现了InvocationHandler接口,并重写了invoke方法,从它的代码实现逻辑中,我们可以看到,实际是调用了Method的invoke方法,也即通过传入的Class/Method参数,使用反射技术,实现方法调用原创 2024-09-30 18:40:09 · 284 阅读 · 0 评论 -
为什么要自定义异常
自定义异常允许你根据错误的类型进行分类。例如上述Mybatis的持久化异常,你可以创建一个基础异常类PersistenceException,然后为不同场景类型的持久化错误创建子类BindingException、CacheException、DataSourceException等。这样通过不同的子类异常,我们就可以更方便的区分不同的异常场景。原创 2024-09-30 12:11:32 · 646 阅读 · 0 评论 -
初始化的代码块和@PostConstruct有什么区别
特性静态代码块非静态代码块@PostConstruct 注解定义位置类级别实例级别类中的方法执行时机类加载时执行每次实例化时执行依赖注入后执行调用次数只调用一次每次创建对象时调用每个 bean 创建时调用,单例只调用一次访问权限只能访问静态成员可以访问实例和静态成员可以访问实例、静态成员和依赖注入的Bean适用场景类级别初始化实例级别初始化Spring 容器管理的 bean 初始化静态代码块适用于类级别的静态初始化,非静态代码块适用于每个对象的初始化,而。原创 2024-09-26 21:25:31 · 479 阅读 · 0 评论 -
源码层面学习动态代理
在Java中,动态代理主要分为CGLIB动态代理和JDK动态代理,我们从Hutool的源码也可一窥这两者的使用方式和区别;原创 2024-07-08 19:24:54 · 408 阅读 · 0 评论 -
从源码学习单例模式
在需要保证线程安全的情况下,饿汉式单例模式是一个很好的选择,因为它在类加载时就创建实例,不需要进行额外的同步操作,避免了线程安全问题。在该模式中,实例被静态初始化,因此在程序运行时实例已经存在,不需要在获取实例时进行额外的判断和同步操作,从而。:如果单例对象的初始化和占用的资源比较小,可以在程序启动时就创建实例,避免在后续使用过程中频繁创建和销毁对象,提高性能。:如果单例对象的初始化比较简单,并且不依赖于外部参数或环境,饿汉式单例模式是一个合适的选择,可以在类加载时完成初始化。饿汉式单例模式是一种在。原创 2024-02-24 17:46:22 · 652 阅读 · 0 评论 -
从源码学习static的使用
static意味静态的,在Java中,主要用来修饰类级别的变量或方法等,被修饰的内容,表示随着类的加载而加载,而不是具体的实例级别。 具体到static的使用场景,主要有以下用途:静态变量、静态方法、静态代码块和静态内部类。原创 2024-02-24 16:29:41 · 1106 阅读 · 0 评论 -
从源码学习访问控制符使用
在Java中,有四个访问控制符:public、protected、default(默认或缺省,不使用关键字)和private。 通过合理使用访问控制符,可以控制类、方法、变量等成员的访问权限,从而提高代码的封装性和安全性。 访问控制符,可以用来修饰类、方法和变量。使用不同的控制符,可以达到不同的权限控制效果。 根据迪米特法则,也即最少知道原则,我们应该尽可能少的暴露内部细节,只需要暴露需要对外暴露的部分,已提高封装性和安全性。原创 2024-02-08 17:13:56 · 1193 阅读 · 0 评论 -
从源码学习final的使用
final字面意思,意为最终的、不可变的。在Java中,final可以用来修饰类、方法和变量,可以分别起到不同的作用。 上面的概念我们都很清楚,那具体到应用场景,有该如何使用呢?下面集合JDK的源码,看看final在源码中的使用;原创 2024-02-08 10:56:05 · 967 阅读 · 0 评论