分支的创建、删除、切换、查看、重命名、创建+切换 分支操作 命令 创建分支 git branch <name> 创建叫name的分支,但仍然停留在当前分支。 删除分支 git branch -d <name>:参数为-D则为强制删除。 git push origin --delete <name> :删除远程仓库的叫name的分支,同名的本地分支并不会被删除,所以还需要单独删除本地同名分支 git branch -dr <remote>/<branch-name…
分支的创建、删除、切换、查看、重命名、创建+切换 分支操作 命令 创建分支 git branch <name> 创建叫name的分支,但仍然停留在当前分支。 删除分支 git branch -d <name>:参数为-D则为强制删除。 git push origin --delete <name> :删除远程仓库的叫name的分支,同名的本地分支并不会被删除,所以还需要单独删除本地同名分支 git branch -dr <remote>/<branch-name…
前言 spring 是如何去扫描的 以 springboot + mybatis 为例,看一下是如何扫描的 结构: 不使用 @MapperScanner 注解,使用 @Mapper 注解 我们的关注点在扫描的过程,至于扫描的前因后果,我们在其它文章中进行探究。 一、Spring 中的包扫描 类结构: ClassPathScanningCandidateComponentProvider ClassPathBeanDefinitionScanner 1.1 ComponentScanAnnotationParser …
Spring生命周期 Constructor > @PostConstruct > InitializingBean > init-method Spring 容器中的 Bean 是有生命周期的,Spring 允许在 Bean 在初始化完成后以及 Bean 销毁前执行特定的操作,常用的设定方式有以下三种: (1) 通过实现 InitializingBean/DisposableBean 接口来定制初…
ClassPathScanningCandidateComponentProvider是Spring提供的工具,可以按自定义的类型,查找classpath下符合要求的class文件。 // 需要扫描的路径 private static final String scanPackage = "com.dh.node"; /** * 启动就开始扫描到map */ @PostConstruct public void init() { discoverComponents(); } @Override…
ClassPathScanningCandidateComponentProvider 类的findCandidateComponents()方法具体实现扫描给定类路径包的功能,主要源码如下: //保存过滤规则要包含的注解,即Spring默认的@Component、@Repository、@Service、 //@Controller注解的Bean,以及JavaEE6的@ManagedBean和JSR-330的@…
一、使用reflections @Service public class TFactory { @PostConstruct public void init() throws IllegalAccessException, InstantiationException { //获取该路径下所有类 Reflections reflections = new Reflections("com.test"); //获取继承了ISuperClass的所有类 Set<Class<? ext…
引言 在我们写工厂类的时候,可能会根据不同的类型(type)生成不同的对象。但在工厂类初始化的时候,我们需要将某个类型的所有类全部初始化才能达到我们的目的。 举个例子,我们定义了很多动物(Animal),我们需要一个AnimalFactory根据动物类型(type)去构建不同的动物实例。如下所示: 我们先构建一个动物基础类型,包含两个方法: getType:获取动物类型 train:训练动物…
一、简介 Reflections通过扫描classpath,索引元数据,并且允许在运行时查询这些元数据。 使用Reflections可以很轻松的获取以下元数据信息: 获取某个类型的全部子类 只要类型、构造器、方法,字段上带有特定注解,便能获取带有这个注解的全部信息(类型、构造器、方法,字段) 获取所有能匹配某个正则表达式的资源 获取所有带有特定签名的方法,包括参数,参数注解…
作者: 西魏陶渊明 博客: https://blog.springlearn.cn/ 本篇主要学习Druid 对Sql的语法解析。学习完之后,我们可以对任意sql进行解析,同时也可以基于AST语法树来生成sql语句。 教程仓库 一、AST AST是abstract syntax tree的缩写,也就是抽象语法树。和所有的Parser一样,Druid Parser会生成一个抽象语法树。 在Druid中,AST节点类型主要包括SQLObject、SQLExpr、SQLState…
作者: 西魏陶渊明 博客: https://blog.springlearn.cn/ 羽化而登仙,池化而提效 本篇文章我们的研究专题是池化技术, 其实所谓池化可以简单理解为缓存。将那些创建比较耗时的对象,缓存起来,放到一个池子里。 比如数据库连接池,线程池,字符串常量池。这个技术常用于框架类设计。本文教你基于Apache-commons-pool2快速实现一个常量池的设计。 一、Pool2 四大件 1.1 新建资源 1.2 回收资源 二、数据库连接池实战 我们利用Commo…