spring boot 应用程序属性——迹忆客-ag捕鱼王app官网
应用程序属性支持我们在不同的环境中工作。 在本章中,我们将学习如何配置和指定 spring boot 应用程序的属性。
command line 属性
spring boot 应用程序将命令行属性转换为 spring boot 环境属性。 命令行属性优先于其他属性源。 默认情况下,spring boot 使用 8080 端口号来启动 tomcat。 让我们学习如何使用命令行属性更改端口号。
步骤 1 - 创建可执行 jar 文件后,使用命令 java –jar
运行它。
步骤 2 - 使用下面给屏幕截图中给出的命令,通过命令行属性更改 spring boot 应用程序的端口号。
注意
: 我们可以使用分隔符-
提供多个应用程序属性。
属性文件
属性文件用于将“n”个属性保存在单个文件中,以在不同的环境中运行应用程序。 在 spring boot 中,属性保存在 classpath
下的 application.properties
文件中。
application.properties
文件位于 src/main/resources
目录中。 示例 application.properties 文件的代码如下
server.port = 9090
spring.application.name = demoservice
请注意,在上面显示的代码中,spring boot 应用程序演示服务在端口 9090 上启动。
yaml 文件
spring boot 支持基于 yaml 的属性配置来运行应用程序。 我们可以使用 application.yml 文件来代替 application.properties。 这个 yaml 文件也应该保存在 classpath 中。 示例 application.yml 文件如下
spring:
application:
name: demoservice
server:
port: 9090
外部的属性
我们可以将属性保存在不同的位置或路径中,而不是将属性文件保存在类路径(classpath)下。 在运行 jar 文件时,我们可以指定属性文件路径。 可以在运行 jar 时使用以下命令指定属性文件的位置
-dspring.config.location = /workspace/java/config/application.properties
**
使用 @value 注解
@value 注解用于读取 java 代码中的环境或应用程序属性值。 读取属性值的语法如下所示
@value("${property_key_name}")
请看以下示例,该示例显示了使用 @value
注释读取 java 变量中 spring.application.name
属性值的语法。
@value("${spring.application.name}")
观察下面给出的代码来获得更好的理解
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
@restcontroller
public class myapplication {
@value("${spring.application.name}")
private string name;
public static void main(string[] args) {
springapplication.run(demoapplication.class, args);
}
@requestmapping(value = "/")
public string name() {
return name;
}
}
注意
- 如果在运行应用程序时未找到该属性,spring boot 将抛出非法参数异常,因为无法解析值“${spring.application.name}”中的占位符“spring.application.name”。
为了解决占位符问题,我们可以使用下面给出的语法设置属性的默认值
@value("${property_key_name:default_value}")
@value("${spring.application.name:demoservice}")
spring boot 活动配置文件
spring boot 支持基于 spring 活动配置文件的不同属性。 例如,我们可以为开发和生产保留两个单独的文件来运行 spring boot 应用程序。
application.properties 中的 spring 活动配置文件
让我们了解如何在 application.properties 中拥有 spring 活动配置文件。 默认情况下,应用程序。 属性将用于运行 spring boot 应用程序。 如果我们想使用基于配置文件的属性,我们可以为每个配置文件保留单独的属性文件,如下所示
application.properties
server.port = 8080
spring.application.name = demoservice
application-dev.properties
server.port = 9090
spring.application.name = demoservice
application-prod.properties
server.port = 4431
spring.application.name = demoservice
在运行 jar 文件时,我们需要根据每个属性文件指定 spring 活动配置文件。 默认情况下,spring boot 应用程序使用 application.properties 文件。 设置活动配置文件的命令如下所示
$ java -jar springapp-0.0.1-snapshot.jar --spring.profiles.active=dev
我们可以在控制台日志上看到活动配置文件名称,如下所示
2022-04-23 20:13:16.322 info 14028 --- [
main] com.study.myapplication :
the following profiles are active: dev
现在,tomcat 已在端口 9090 (http) 上启动,如下所示
2022-04-23 20:13:17.185 info 14028 --- [
main] s.b.c.e.t.tomcatembeddedservletcontainer :
tomcat started on port(s): 9090 (http)
我们可以设置生产活动配置文件,如下所示
$ java -jar springapp-0.0.1-snapshot.jar --spring.profiles.active=prod
我们可以在控制台日志上看到活动配置文件名称,如下所示
2022-04-23 20:13:20.322 info 14028 --- [
main] com.study.myapplication :
the following profiles are active: prod
现在,tomcat 在端口 4431 (http) 上启动,如下所示
2022-04-23 20:13:21.185 info 14028 --- [
main] s.b.c.e.t.tomcatembeddedservletcontainer :
tomcat started on port(s): 4431 (http)
application.yml 的 spring 活动配置文件
让我们了解如何为 application.yml 保持 spring 活动配置文件。 我们可以将 spring 活动配置文件属性保留在单个 application.yml 文件中。 无需使用单独的文件,如 application.properties。
以下是在 application.yml 文件中保留 spring 活动配置文件的示例代码。 请注意,分隔符 (---)
用于分隔 application.yml 文件中的每个配置文件。
spring:
application:
name: demoservice
server:
port: 8080
---
spring:
profiles: dev
application:
name: demoservice
server:
port: 9090
---
spring:
profiles: prod
application:
name: demoservice
server:
port: 4431
下面给出了设置开发活动配置文件的命令
$ java -jar springapp-0.0.1-snapshot.jar --spring.profiles.active=dev
我们可以在控制台日志上看到活动配置文件名称,如下所示
2022 -04-23 20:41:37.202 info 14104 --- [
main] com.study.myapplication :
the following profiles are active: dev
现在,tomcat 在端口 9090 (http) 上启动,如下所示
2022 -04-23 20:41:38.650 info 14104 --- [
main] s.b.c.e.t.tomcatembeddedservletcontainer :
tomcat started on port(s): 9090 (http)
下面给出了设置生产活动配置文件的命令
$ java -jar springapp-0.0.1-snapshot.jar --spring.profiles.active=prod
我们可以在控制台日志上看到活动配置文件名称,如下所示
2022 -04-23 20:45:37.202 info 13400 --- [
main] com.study.myapplication :
the following profiles are active: dev
这将在端口 4431 (http) 上启动 tomcat,如下所示:
2022 -04-23 20:45:38.473 info 13400 --- [
main] s.b.c.e.t.tomcatembeddedservletcontainer :
tomcat started on port(s): 4431 (http)