Spring Boot配置application.yml及根据application.yml选择启动配置的操作方法
作者:Miaow.Y.Hu
在Spring Boot 中可以选择applicant.properties 作为配置文件,也可以通过在application.yml中进行配置,让Spring Boot根据你的选择进行加载启动配置文件。
这种配置方式,我们通常在实际开发中经常使用,主要为了发布版本和以及开发环境,本地环境,测试环境等不同环境使用不同的配置文件,这样就减少了我们经常去配置application.yml的相关具体配置,因为不同的配置文件里边的ip地址或者数据库的链接以及端口不同,干过开发的都知道,我们一般会将数据库的访问地址,账号,密码,Redis的访问地址等均放到application.yml文件中。
开始,我们在Spring Boot中创建一个启动类文件
@SpringBootApplication public class Chapter12Application { public static void main(String[] args) { SpringApplication.run(Chapter12Application.class, args); } @RestController static class HelloController { //指定配置文件读取name并获得配置文件的值 @Value("${name:}") private String name; //浏览器根据地址访问得到相关name @RequestMapping("/") public String index() { return name; } } }
创建一个application.yml文件存放到src/resources,目录下:
# 默认激活dev配置,选择启动配置文件,实际上均采用active读取 spring: profiles: active: "test" --- # 指定的配置文件 spring: config: activate: on-profile: "dev" # 读取的name文件 name: dev.Miaow.Y.Hu.com #启动端口号配置 server: port: 7745 --- spring: config: activate: on-profile: "test" name: test.Miaow.Y.Hu.com server: port: 7745 --- spring: config: activate: on-profile: "prod" server: port: 7745 name: prod.Miaow.Y.Hu.com
Spring Boot 2.4 以后的配置
好,有了上边对application.yml的相关基础,接下来我们在一个application.yml进行相关配置,然后根据相关配置启动我们需要的配置文件,然后得到我们想要的name.
依旧是Spring Boot 的启动文件
@SpringBootApplication public class Chapter13Application { public static void main(String[] args) { SpringApplication.run(Chapter13Application.class, args); } @Slf4j @RestController static class HelloController { @Value("${db:}") private String db; @Value("${mq:}") private String mq; @RequestMapping("/") public String index() { log.info("db:" + db); log.info("mq:" + mq); return db + "===" + mq; } } }
依旧是如此,我们可以在pom.xml先配置我们所需要的依赖:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
接下来我们还是将重点放到我们的application.yml配置文件上:
# 2.4之前的配置 #spring: # profiles: # active: "dev" # #--- #spring.profiles: "dev" #spring.profiles.include: "dev-db,dev-mq" # #--- #spring.profiles: "dev-db" # #db: dev-db.Miaow.Y.Hu.com # #--- #spring.profiles: "dev-mq" # #mq: dev-mq.Miaow.Y.Hu.com # #--- #2.4之后的配置 # 默认激活dev配置 spring: profiles: # 更改指定的启动配置文件 active: "dev" group: # 分组,只要你确定定义的别名满足条件,那么就适配 "dev": "dev-db,dev-mq" "prod": "prod-db,prod-mq" --- spring: config: activate: on-profile: "dev-db" db: dev-db.Miaow.Y.Hu.com --- spring: config: activate: on-profile: "dev-mq" mq: dev-mq.Miaow.Y.Hu.com --- spring: config: activate: on-profile: "prod-db" db: prod-db.Miaow.Y.Hu.com --- spring: config: activate: on-profile: "prod-mq" mq: prod-mq.Miaow.Y.Hu.com
由于我并未配置具体的端口号,故而系统将采用默认的端口号8080启动,其中我们通过端口号访问得到,因为我们默认采用dev进行启动,故而我们在浏览器上得到的就是dev开头的数据。
这是在浏览器打印的结果,在控制台我们也可以看到相关打印的结果:
同理,我们也可以利用application.yml的特性,来完成我们所需要的功能。
例如:
@RestController public class HelloController { @Value("${com.Miaow.Y.Hu.from}") public String from; @RequestMapping("/hello") public String index() { return "Hello World"; } @RequestMapping("/demo") public String didi(){ System.out.println(from); return from; } }
application.properties
com.Miaow.Y.Hu.from=miaow
到此这篇关于Spring Boot配置 application.yml,根据application.yml选择启动配置的文章就介绍到这了,更多相关Spring Boot配置 application.yml内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!