java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > application和bootstrap的加载顺序及区别

基于application和bootstrap的加载顺序及区别说明

作者:lei_dx

这篇文章主要介绍了application和bootstrap的加载顺序及区别说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

application和bootstrap的加载顺序及区别

bootstrap.yml(bootstrap.properties)先加载

application.yml(application.properties)后加载

bootstrap.yml 用于应用程序上下文的引导阶段。

bootstrap.yml 由父Spring ApplicationContext加载。

父ApplicationContext 被加载到使用 application.yml 的之前。

bootstrap.yml

是系统级别的一些参数配置,这些参数一般是不变的。

application.yml 一般用来定义单个应用级别的,如果搭配 spring-cloud-config 使用 application.yml 里面定义的文件可以实现动态替换。

使用Spring Cloud Config Server时,应在 bootstrap.yml 中指定:

spring.application.name
spring.cloud.config.server.git.uri

注意:

一旦bootStrap.yml 被加载,则内容不会被覆盖,即便后期加载的application.yml的内容标签与bootstrap的标签一致,application 也不会覆盖bootstrap, 而application.yml 里面的内容可以动态替换。

bootstrap.yml与application.yml执行顺序(原因:类加载器的先后顺序)

结论:bootstrap.yml 先于 application.yml 加载

bootstrap.yml(bootstrap.properties)用来程序引导时执行,应用于更加早期配置信息读取,如可以使用来配置application.yml中使用到参数等

application.yml(application.properties) 应用程序特有配置信息,可以用来配置后续各个模块中需使用的公共参数等。

bootstrap.yml 先于 application.yml 加载

应用:当使用 Spring Cloud Config Server 的时候

bootstrap.yml 中

spring.application.name: test
spring.cloud.config.name: testName
spring.cloud.config.uri: http://config1.spring-demo.test.com:8888

原因:类加载器的先后顺序

负责加载class文件,class文件在文件开头有特定的文件标示,并且ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine决定 

虚拟机自带的加载器

1.启动类加载器(Bootstrap)C++

2.扩展类加载器(Extension)Java

3.应用程序类加载器(AppClassLoader)Java  也叫系统类加载器,加载当前应用的classpath的所有类

4.用户自定义加载器  Java.lang.ClassLoader的子类,用户可以定制类的加载方式

注意java中反射的三种方法

1.通过Object类的getClass方法来获取

java.lang.Object中定义有getClass方法:public final Class getClass()所有Java对象都具备这个方法,该方法用于返回调用该方法的对象的所属类关联的Class对

2.用.class的方式

使用类名加“.class”的方式即会返回与该类对应的Class对象。

3.使用Class.forName方法

Class有一个著名的static方法

forName:public static Class forName(String className) throws ClassNotFoundException

该方法可以根据字符串参数所指定的类名获取与该类关联的Class对象。

如果该类还没有被装入,该方法会将该类装入JVM。

该方法声明抛出ClassNotFoundException异常。

顾名思义,当该方法无法获取需要装入的类时(例如,在当前类路径中不存在这个类),就会抛出这个异常。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文