在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
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/197905.html