01 2021 档案
摘要:先看第一个 注释上有提及,注解起作用的相关类 第二个,也是自动配置的启动注解 第一个:自动配置包,@Import 注解有三种使用方法,当注入的这个类实现特定接口,会有特殊效果 第二个 到这里,其实自动配置的注解层面的原因已经说完了,其实在注解层面还是很简单就清楚自动配置的过程的,下面是配合配置文件的
阅读全文
摘要:首先说启动过程,下一篇说自动配置的过程 创建了SpringApplication之后,调用它的run方法,启动 创建父容器 准备容器,设置了小部分信息 然后开始刷新容器 摆了一道 回到熟悉的那个方法,不过其中有些改变,只看改变的那些方法,而且到现在,web容器和子容器都还没启动 第一个: 第二个:
阅读全文
摘要:从web.xml说起,父子容器的启动,必须配置contextLoadListener和一个servlet,然后加入init-param指定配置文件,而ServletContextListener是javax提供的接口,在web容器启动时,就会自动调用它的初始化方法,导入父容器的配置文件 创建父容器,
阅读全文
摘要:之前学习了BeanFactoy的创建过程和Bean的生命周期之后,这次将看看平时经常使用ApplicationContext和BeanFactory是什么关系。 从new一个ApplicationContext开始 进入的第一个方法看看: 进入第二方法,也是最重要的一个方法,这个方法中有十二个方法,
阅读全文
摘要:进入方法内部,先看整个方法包含了哪些重要方法: 整个方法看完了,接着进入其中比较重要的方法看看: 第一个getSingleton方法,也就是尝试从缓存中拿 第二个方法:将拿到的bean看看是不是FactoryBean,如果是,那么返回的就是通过getObject方法返回的bean 会在判断是否单例之
阅读全文
摘要:1 public class MyApplicationContext { 2 public static void main(String[] args) { 3 ClassPathResource resource = new ClassPathResource("application.xml
阅读全文
摘要:一、API 1、int getAndIncrement() 返回旧值,然后自增 2、int incrementAndGet() 自增,然后返回新值 3、int getAndDecrement() 返回旧值,然后自减 4、int decrementAndGet() 自减,然后返回新值 5、boolea
阅读全文
摘要:ResourceLoader:定义资源加载器,主要应用于根据给定的资源文件地址返回对应的Resource。BeanDefinitionReader:主要定义资源文件读取并转换为BeanDefinition的各个功能。EnvironmentCapable:定义获取Environment方法。Docum
阅读全文
摘要:AliasRegistry:定义对alias的简单增删改等操作。SimpleAliasRegistry:主要使用map作为alias的缓存,并对接口AliasRegistry进行实现。SingletonBeanRegistry:定义对单例的注册及获取。BeanFactory:定义获取bean及bea
阅读全文
摘要:一、什么是双亲委派模型 简单来说,就是当一个类加载器被调用的loadClass方法之后,不会直接就加载这个class,而是会先将加载任务向上(父加载器)递交,让父类加载器尝试加载,直到最顶层类加载器,然后再依次向下加载,直到能够加载返回。 1 public Class<?> loadClass(St
阅读全文
摘要:一、类加载器的类型 1、Bootstrap类加载器 最顶层的类加载器,它是由C++编写,主要负责JVM的核心类库的加载,例如java.lang包。 2、扩展类加载器 第二层类加载器,父加载器当然就是bootstrap,主要是加载jre\lb\ext子目录里面的类库。 3、系统类加载器 第三层类加载,
阅读全文
摘要:一、类的加载阶段 类的加载阶段,其实就是将class字节码文件中的二进制数据读取到内存之中,然后将文件所代表的静态存储结构,转换为方法区中运行时的数据结构,并且在堆内存中生成一个该类的java.lang.Class对象,作为访问方法区数据结构的入口。 而在同一个类加载器下,无论一个类被加载多少次,堆
阅读全文
摘要:JVM对类的初始化是一个延迟的机制,只有当一个类在首次主动使用的时候才会被初始化,在JVM下有六种情况算是主动使用。而在同一个运行时包下,一个Class只会被初始化一次。 1、new 关键字实例化,会导致类的加载并且最终初始化 2、调用类的静态变量,会导致类的初始化 3、调用类的静态方法,也会导致类
阅读全文
摘要:在线程的正常运行中,调用该线程的interrupt方法,该线程的interrupt的flag会变成true,但是线程正常运行; 1 //中断前 2 System.out.printf("Thread is interrupted ? %s\n", thread.isInterrupted()); 3
阅读全文
摘要:在使用Swagger2.9的过程中,出现Illegal DefaultValue null for parameter type integer 在网上查找了解决办法,说是空字符串转换integer异常,需要在相应的integer字段加上@ApiModelProperty注解,然后加上属性 exam
阅读全文