Spring Boot配置 application.yml,根据application.yml选择启动配置
  cEe6YWJIAuf2 2023年11月05日 41 0


在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开头的数据。

Spring Boot配置 application.yml,根据application.yml选择启动配置_1024程序员节


这是在浏览器打印的结果,在控制台我们也可以看到相关打印的结果:

Spring Boot配置 application.yml,根据application.yml选择启动配置_spring_02


同理,我们也可以利用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选择启动配置_1024程序员节_03


Spring Boot配置 application.yml,根据application.yml选择启动配置_spring_04


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
cEe6YWJIAuf2