教程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);}@RestControllerstatic 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
:用于注入属性值。RequestMapping
和RestController
:用于创建 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的多环境配置。具体内容和作用如下:
-
默认激活开发环境配置(dev):
spring:profiles:active: "dev"
这部分设置了Spring Boot的活动(active)配置文件为
dev
。这意味着如果没有特别指定其他配置文件,应用将默认使用开发环境(dev)下的配置。 -
具体环境配置区分:
下面的配置通过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
作为配置属性。
-
这种配置方式使得开发者可以在一个配置文件中维护多个环境的配置,并通过激活不同的配置文件来切换环境,非常适合在不同阶段(开发、测试、生产)需要不同配置的场景。每个环境具体的配置如域名、数据库参数等可以根据实际需要分别设置。