• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

SpringBoot,Nacos 配置加载事宜

JAVA相关 supingemail 2179次浏览 0个评论

.
 

针对 nacos 在 springboot 中的调用,获取配置信息,做如下测试,并得出结论 : 

nacos 测试结果:
    
    1.nacos 管理的配置文件中,配置了一个key,再到项目中bootstrap.yml中配置相同的key,不起作用!
    nacos 配置:
    info:
      redis:
        host: localhost
        port: 6379
    
    本地bootstrap.yml配置:
    info:
      redis:
        host: 192.168.100.100
        port: 6379
    输出:{“host”:”localhost”,”port”:6379}
        
    2.nacos 管理的配置文件中,配置了一个以某个key开始的信息,再到项目中bootstrap.yml中配置相同的key开始的信息,以nacos管理的配置信息为主,bootstrap.yml中为辅助!
    
    nacos 配置:
    info:
      redis:
        host: localhost
        port: 6379
    
    本地bootstrap.yml配置:
    info:
      redis:
        host: 192.168.100.100
        port: 6379
        index: 1
    输出:{“host”:”localhost”,”index”:1,”port”:6379}
    
    
    3.nacos 管理的配置文件中,配置了一个以某个key开始的信息,再到项目中 application.yml中配置相同的key开始的信息,以nacos管理的配置信息为主,application.yml中为辅助!
    
    nacos 配置:
    info:
      redis:
        host: localhost
        port: 6379
    
    本地 application.yml配置:
    info:
      redis:
        host: 192.168.100.100
        port: 6379
        index: 1
    输出:{“host”:”localhost”,”index”:1,”port”:6379}
    
    4.nacos 管理的配置文件中,配置了一个以某个key开始的信息,再到项目中 application-xxx.yml中配置相同的key开始的信息,以nacos管理的配置信息为主,application-xxx.yml中为辅助!
    
    nacos 配置:
    info:
      redis:
        host: localhost
        port: 6379
    
    本地 application.yml配置:
    info:
      redis:
        host: 192.168.100.100
        port: 6379
        index: 1
    输出:{“host”:”localhost”,”index”:1,”port”:6379}
    
    5.springboot 工程中,相同名称的文件名: application.properties 和 application.yml ,会读取application.yml中的内容.

结论:文件配置,优先级由高到底,高优先级的配置会覆盖低优先级的配置.
    1.一切以 nacos 配置中心的配置信息为主,本地bootstrap.yml 或 application.yml中有相同信息,不会被覆盖, 获取时候,可以将公共的信息抽取出来放入到 nacos 配置中去,私有的信息放置到本地的yml中.

    2.Springboot 中,加载完bootstrap.yml中的信息,还会加载本地的,其他yml文件,加载顺序是:bootstrap.yml>application.yml>application-xxx.yml,没有application.yml,会默认加载application-dev.yml.
如果某key存在application.yml,也存在application.properties文件,那么会读取application.yml中相同的key的配置作为springboot的获取的值。

    3.bootstrap.yml 由父Spring ApplicationContext加载,它的级别是最高的.bootstrap.yml 是放入的是系统级别的配置,配置是最高的;application.yml 可以用来定义应用级别的,级别要低些.

    4.在不指定要被加载文件时,默认的加载顺序:由里向外加载,所以最外层的最后被加载,会覆盖里层的属性(参考官网介绍)
    SpringApplication will load properties from application.properties files in the following locations and add them to the Spring Environment:

    5.Springboot 默认的web容器主要有:Tomcat > Jetty > Undertow , 默认的web容器是:Tomcat 这个在spring-boot-starter-web中引入的配置可以证明.
    @Import({ ServletWebServerFactoryAutoConfiguration.BeanPostProcessorsRegistrar.class,
      ServletWebServerFactoryConfiguration.EmbeddedTomcat.class,
      ServletWebServerFactoryConfiguration.EmbeddedJetty.class,
      ServletWebServerFactoryConfiguration.EmbeddedUndertow.class })
    public class ServletWebServerFactoryAutoConfiguration {} 从这个顺序上来说,也是: Tomcat > Jetty > Undertow ,一般情况下,在SpringBoot依赖中默认就已经引入tomcat的依赖,
    因此这里对于tomcat来说一般情况下会恒成立,那么Tomcat就会一直作为恒成立条件被SpringBoot首选为默认服务器。可以手动通过@Bean 标签来配置SpringBoot的web容器.

    6.如何剔除Tomcat作为springboot的默认web容器,使用 jetty 作为 SpringBoot 的web容器,那就是如下所示:
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <!– 剔除Tomcat –>
        <exclusions>
            <exclusion>
                <artifactId>spring-boot-starter-tomcat</artifactId>
                <groupId>org.springframework.boot</groupId>
            </exclusion>
        </exclusions>
    </dependency>
    <!– 加入jetty –>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jetty</artifactId>
    </dependency>
    web容器的自动配置,实际上是SpringBoot通过创建原生Tomcat对象,对这个对象进行端口,协议,组件等初始化,并且将Web应用信息Context对象封装到这个tomcat对象中,
    然后Web应用信息配置生命周期监听生效后启动tomcat,最后将这个过程封装到一个WebServer对象中供SpringBoot启动时调用。

    大致信息如此,其他的后续再补充。    
    
   


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明SpringBoot,Nacos 配置加载事宜
喜欢 (0)

您必须 登录 才能发表评论!

加载中……