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
装备完毕之后,发动测验。
浏览器输入地址:http://localhost:8888/springbootcase/hello?name=lw , 页面验证成果如下。
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(出产环境)。
各装备文件内容如下,
- application-dev.yml
#开发环境
server:
port: 8881 # 设置内嵌Tomcat端口号
servlet:
context-path: /springbootcase1 # 设置项目上下文根途径,这个在恳求拜访的时分需求用到
- application-test.yml
#测验环境
server:
port: 8883 # 设置内嵌Tomcat端口号
servlet:
context-path: /springbootcase3 # 设置项目上下文根途径,这个在恳求拜访的时分需求用到
- application-prod.yml
#出产环境
server:
port: 8882 # 设置内嵌Tomcat端口号
servlet:
context-path: /springbootcase2 # 设置项目上下文根途径,这个在恳求拜访的时分需求用到
4)总装备文件application.yml进行环境的激活
spring:
profiles:
active: test #激活对应环境装备,以测验环境为例
说明:除此之外,还能够运用maven编译打包的办法装备profile。一般这种情况比较罕见,需求根据各公司环境情况而定。
发动并测验验证如下,
浏览器输入: http://localhost:8883/springbootcase3/hello?name=lw, 成果如下,
4、SpringBoot自定义装备
在SpringBoot中心装备文件中,除以上运用内置的装备项之外,咱们还能够在自定义装备,然后采用注解办法去读取装备。
1)@Value注解
过程1:在中心装备文件applicatin.yml中,增加两个自定义装备项test.site和test.user。在IDEA中能够看到这两个特点不能被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。
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:从头发动并在浏览器中进行测验。
5. 远程装备中心(现在出产常用的办法)
1)装备中心流程图
首要包含两大中心内容:
① 远程装备中心负责特点键值的新增、变更、发布等操作。
② 业务使用端,则经过装备远程装备中心地址获取自己锁需求的装备数据。 另外经过客户端监听的办法,近实时地获取远端装备的修改或删去。
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等,规划思路根本迥然不同,感兴趣的能够自己深入研究。
以上!