Spring Boot的中心装备文件用于装备Spring Boot程序,文件名字有必要以application开端。这个既是底层源码的强制要求,也是SpringBoot的一种代码规约,有助于在开发层面利于代码规范办理。

说明:以下内容接着i前面的SpringBootCase项目就行演示。

1、application. properties中心文件

格局:以键值对的办法进行装备,key=value 示例:name=xintu 咱们修改application.properties装备文件。比方修改默认tomcat端口号及项目上下文件根。

设置内嵌Tomcat端口号

server.port=8888

设置项目上下文根途径,这个在恳求的时分需求用到

server.servlet.context-path=/springbootcase

装备完毕之后,发动测验。

SpringBoot核心配置全面总结

浏览器输入地址:http://localhost:8888/springbootcase/hello?name=lw , 页面验证成果如下。

SpringBoot核心配置全面总结

2、 application.yml装备文件(推荐装备风格) yml 是一种 yaml 格局的装备文件,首要采用一定的空格、换行等格局排版进行装备。格局如下,

key: 空格+value, 表示一对键值对。

装备YNML时,需求留意以下4点:

1)以空格的缩进来控制层级联系。 2)只要是左对齐的一列数据,都是归于同一层级。 3)空格有必要有。 4)特点和值对大小写灵敏。

server:
  port: 8888 # 设置内嵌Tomcat端口号
  servlet:
    context-path: /SpringBootCase # 设置项目上下文根途径,这个在恳求拜访的时分需求用到

特点:与 application. properties 相比,yaml更能直观地被计算机识别,并且简单被人类阅览。 yaml 类似于 xml,可是语法比xml 简练许多,值与前面的冒号装备项有必要要有一个空格, yml 后缀也能够运用 yaml 后缀。当两种格局装备文件同时存在,运用的是 .properties 装备文件,为了演示yml,能够先将其改名,从头运转SpringbootApplication,检查发动的端口及上下文根。

咱们在后面的学习过程中,均运用 .yml格局 。假如想改.properties方法也能够,依照自己喜爱的风格 或 团队约定即可。

3、SpringBoot多环境装备

在实践开发的过程中,咱们的项目会经历许多的阶段,开发、测验、上线, 尤当时很大厂,在进行一些重要需求迭代时,还会包括预发、灰度等。每个阶段的装备会因使用所依靠的环境不同而不同,例如:数据库装备、缓存装备、依靠第三方装备等,那么这个时分为了便利装备在不同的环境之间切换,SpringBoot提供了多环境profile装备功用。

命名格局:application-环境标识.yml(或 .properties)。

下面咱们为每个环境创立3个装备文件,别离命名为:application-dev.yml(开发环境)、application-dev.yml(测验环境)、application-dev.yml(出产环境)。

SpringBoot核心配置全面总结

各装备文件内容如下,

  1. application-dev.yml

#开发环境

server:
  port: 8881 # 设置内嵌Tomcat端口号
  servlet:
    context-path: /springbootcase1 # 设置项目上下文根途径,这个在恳求拜访的时分需求用到
  1. application-test.yml
#测验环境
server:
  port: 8883 # 设置内嵌Tomcat端口号
  servlet:
    context-path: /springbootcase3 # 设置项目上下文根途径,这个在恳求拜访的时分需求用到
  1. application-prod.yml
#出产环境
server:
  port: 8882 # 设置内嵌Tomcat端口号
  servlet:
    context-path: /springbootcase2 # 设置项目上下文根途径,这个在恳求拜访的时分需求用到

4)总装备文件application.yml进行环境的激活

spring:
  profiles:
      active: test #激活对应环境装备,以测验环境为例

说明:除此之外,还能够运用maven编译打包的办法装备profile。一般这种情况比较罕见,需求根据各公司环境情况而定。

发动并测验验证如下,

SpringBoot核心配置全面总结

浏览器输入: http://localhost:8883/springbootcase3/hello?name=lw, 成果如下,

SpringBoot核心配置全面总结

4、SpringBoot自定义装备

在SpringBoot中心装备文件中,除以上运用内置的装备项之外,咱们还能够在自定义装备,然后采用注解办法去读取装备。

1)@Value注解

过程1:在中心装备文件applicatin.yml中,增加两个自定义装备项test.site和test.user。在IDEA中能够看到这两个特点不能被SpringBoot识别,布景是赤色的。

SpringBoot核心配置全面总结

过程2:在SpringbootApplication中定义特点,并运用@Value注解或者自定义装备值,并对其办法进行测验 。

package com.xintu.demo;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
@SpringBootApplication
public class SpringbootApplication {
	@Value("${test.site}") //获取自定义特点test.site
	private String site;
	@Value("${test.user}")  //获取自定义特点test.user
	private String user;
	public static void main(String[] args) {
		SpringApplication.run(SpringbootApplication.class, args);
	}
	@GetMapping("/hello")
	public String hello(@RequestParam(value = "name", defaultValue = "World") String name) {
		return String.format("欢迎 %s 来到<a href=\"http://www.35xintu.com\">35新途</a>!", name);
	}
	@GetMapping("/value")
	public String testValue() { //测验@Value注解
		return String.format("欢迎 %s 来到<a href=\"http://www.35xintu.com\">%s</a>!" , user,site);
	}
}

过程3: 从头发动后,在浏览器中进行测验验证: http://localhost:8888/springbootcase/value。

SpringBoot核心配置全面总结

2) @ConfigurationProperties

将整个文件映射成一个目标,用于自定义装备项比较多的情况。

过程1:在 com.xintu.demo.config 包下创立 XinTuConfigInfo 类,并为该类加上@Component和@ConfigurationProperties注解,prefix能够不指定,假如不指定,那么会去装备文件中寻找与该类的特点名共同的装备,prefix的效果能够区别同名装备。

package com.xintu.demo.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "test")
public class XinTuConfigInfo {
    private String site;
    private String user;
    public String getSite() {
        return site;
    }
    public void setSite(String site) {
        this.site = site;
    }
    public String getUser() {
        return user;
    }
    public void setUser(String user) {
        this.user = user;
    }
}

过程2: 在SpringbootApplication中注入XinTuConfigInfo 装备类。

package com.xintu.demo;
import com.xintu.demo.config.XinTuConfigInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
@SpringBootApplication
public class SpringbootApplication {
	@Autowired
	private XinTuConfigInfo configInfo; //测验@ConfigurationProperties
	@Value("${test.site}")
	private String site;
	@Value("${test.user}")
	private String user;
	public static void main(String[] args) {
		SpringApplication.run(SpringbootApplication.class, args);
	}
	@GetMapping("/hello")
	public String hello(@RequestParam(value = "name", defaultValue = "World") String name) {
		return String.format("欢迎 %s 来到<a href=\"http://www.35xintu.com\">35新途</a>!", name);
	}
	@GetMapping("/value")
	public String testValue() { //测验 @Value 注解
		return String.format("欢迎 %s 来到<a href=\"http://www.35xintu.com\">%s</a>!" , user,site);
	}
	@GetMapping("/config")
	public String config() { //测验 @ConfigurationProperties 注解
		return String.format("欢迎 %s 来到<a href=\"http://www.35xintu.com\">%s</a>!" , configInfo.getUser(),configInfo.getSite());
	}
}

过程3:从头发动并在浏览器中进行测验。

SpringBoot核心配置全面总结

5. 远程装备中心(现在出产常用的办法)

1)装备中心流程图

SpringBoot核心配置全面总结

首要包含两大中心内容:

① 远程装备中心负责特点键值的新增、变更、发布等操作。

② 业务使用端,则经过装备远程装备中心地址获取自己锁需求的装备数据。 另外经过客户端监听的办法,近实时地获取远端装备的修改或删去。

2)开源装备中心对比(按开源时间次序)

现在市面上用的比较多的装备中心有:Disconf、Spring Cloud Config、Apollo、Nacos。

① Disconf

2014年7月百度开源的装备办理中心,相同具备装备的办理能力,不过现在现已不保护了。

② Spring Cloud Config

2014年9月开源,Spring Cloud 生态组件,能够和Spring Cloud体系无缝整合。

③ Apollo

2016年5月,携程开源的装备办理中心,具备规范的权限、流程治理等特性。

④ Nacos

2018年6月,阿里开源的装备中心,也能够做DNS和RPC的服务发现。

以上各装备服务在装备办理领域的概念和原理根本相同,可是也存在一些不同的点。另外也有一些内部私有装备中心,比方京东的DUCC,美团的MCC等,规划思路根本迥然不同,感兴趣的能够自己深入研究。

以上!