spring boot 基础案例【2】对多环境配置的支持更改

教程1
案例教程
案例仓库
在线编程

教程2
基础教程
教程仓库
在线编程

本案例所在的仓库
本案例所在的文档


进入正文

1.文件目录

在这里插入图片描述

1. Chapter12Application.java

地址:/chapter1-2/src/main/java/com/didispace/chapter12/Chapter12Application.java

package com.didispace.chapter12;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
public class Chapter12Application {

    public static void main(String[] args) {
        SpringApplication.run(Chapter12Application.class, args);
    }

    @RestController
    static class HelloController {

        @Value("${name:}")
        private String name;

        @RequestMapping("/")
        public String index() {
            return name;
        }

    }

}

这段代码是一个使用 Spring Boot 框架创建的基本 Java Web 应用程序,具有一个简单的 REST 控制器。以下是代码中各部分的详细解释:

1. Package 声明

package com.didispace.chapter12;

这行代码声明了代码所在的包(package),Java 使用包来组织相关的类。com.didispace.chapter12是包的名称,通常采用公司域名的逆序作为包名,以确保唯一性。

2. Import 语句

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

这些import语句导入了代码中将要使用的类和注解。这包括:

  • SpringApplication:用于启动 Spring 应用。
  • SpringBootApplication:标记主类,组合了多个注解的功能,如自动配置 (@EnableAutoConfiguration)。
  • Value:用于注入属性值。
  • RequestMappingRestController:用于创建 RESTful Web服务。

3. 主类和启动方法

@SpringBootApplication
public class Chapter12Application {
    public static void main(String[] args) {
        SpringApplication.run(Chapter12Application.class, args);
    }
}
  • @SpringBootApplication:标记这个类是 Spring Boot 应用的入口。
  • main方法:程序入口,SpringApplication.run()方法会启动应用。

4. REST Controller

@RestController
static class HelloController {

    @Value("${name:}")
    private String name;

    @RequestMapping("/")
    public String index() {
        return name;
    }
}
  • @RestController:标记这个类是一个控制器,其中所有方法返回的数据直接写入 HTTP 响应体,这是 RESTful Web服务的典型方式。
  • @Value("${name:}"):这是一个 Spring 表达式,用于注入名为name的环境变量值到变量name中。如果未设置,则默认为空字符串。
  • @RequestMapping("/"):指定这个方法响应的 URL 路径,这里是根路径。
  • index()方法:当访问根路径 ("/") 时调用,返回配置的name值。

这个简单的应用能够通过环境配置输出不同的字符串,主要用于展示 Spring Boot 应用的基本结构和简单的环境变量使用。这种模式在微服务架构中非常有用,可以通过外部配置灵活控制应用行为。

2.application.yaml

地址:/chapter1-2/src/main/resources/application.yaml

# 默认激活dev配置
spring:
  profiles:
    active: "dev"

---

spring:
  config:
    activate:
      on-profile: "dev"

name: dev.didispace.com

---

spring:
  config:
    activate:
      on-profile: "test"

name: test.didispace.com

---

spring:
  config:
    activate:
      on-profile: "prod"

name: prod.didispace.com

这段代码是用来配置Spring Boot应用程序中不同环境的激活和属性配置的,主要用YAML格式进行配置管理。这里涉及到的是Spring的多环境配置。具体内容和作用如下:

  1. 默认激活开发环境配置(dev)

    spring:
      profiles:
        active: "dev"
    

    这部分设置了Spring Boot的活动(active)配置文件为dev。这意味着如果没有特别指定其他配置文件,应用将默认使用开发环境(dev)下的配置。

  2. 具体环境配置区分
    下面的配置通过spring.config.activate.on-profile指定了基于不同环境的特定配置。这允许应用在不同的运行环境下加载不同的配置属性。

    • 开发环境(dev)配置

      ---
      spring:
        config:
          activate:
            on-profile: "dev"
      name: dev.didispace.com
      

      当激活的配置文件为dev时,会使用name: dev.didispace.com作为配置属性。

    • 测试环境(test)配置

      ---
      spring:
        config:
          activate:
            on-profile: "test"
      name: test.didispace.com
      

      当激活的配置文件为test时,会使用name: test.didispace.com作为配置属性。

    • 生产环境(prod)配置

      ---
      spring:
        config:
          activate:
            on-profile: "prod"
      name: prod.didispace.com
      

      当激活的配置文件为prod时,会使用name: prod.didispace.com作为配置属性。

这种配置方式使得开发者可以在一个配置文件中维护多个环境的配置,并通过激活不同的配置文件来切换环境,非常适合在不同阶段(开发、测试、生产)需要不同配置的场景。每个环境具体的配置如域名、数据库参数等可以根据实际需要分别设置。

3.效果

在这里插入图片描述

  • 19
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值