咱们的文件也好,代码也好其实都在Disk磁盘里面,上面有一些配置文件,还有一些class文件.一般情况下先去读取配置文件,基于配置文件里面的信息再去找到需要读取的类,并通过IO输入输出流技术把这些资源
读到我们内存中,然后通过内存中的一个对象来存储这些信息.当使用这些类时,系统就会初始化(比如初始化线
程池,提前加载好加密证书等),构建一些实例对象.
首先它会构建一个工厂BeanFactory,这个对象会创建我们类的实例交给Spring去管理.之后我们的类在运行的时候会被加载到内存,启动类是根据启动类注解@SpringBootApplication去启动的,根据配置信息来进
行扫描指定包以及子包中的类,再根据扫描注解@ComponentScan去扫面类中有特定注解的类.扫描的目的就是从
磁盘中去找到第一阶段学的File这个类,里面有一些方法可以去访问磁盘当中的这些文件叫ListFiles,就是
找到指定目录下面的文件.我们的类都在磁盘中存着,借助于IO会把磁盘中的.class文件读到我们的内存里里面.
系统底层会基于反射判断这些类有没有这样的注解来描述的对象叫做Bean,当这些类要交给Spring去管理的时
候,它就会创建这个类的实例.
创建完对象以后,把对象存起来下次再用的时候还可以去找到这个对象,仓库管理员Context对象把工厂创建的对象存储到我们这个Map中,需要的时候从这个Map当中来获取就可以了.