前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Boot应用程序属性配置

Spring Boot应用程序属性配置

作者头像
黑洞代码
发布2022-07-01 16:08:40
1.3K0
发布2022-07-01 16:08:40
举报

应用程序属性用于支持在不同的环境中工作。在本章中,将学习如何配置和指定Spring Boot应用程序的属性。

命令行属性

Spring Boot应用程序将命令行属性转换为Spring Boot环境属性。命令行属性优先于其他属性源。默认情况下,Spring Boot使用8080端口号来启动Tomcat。接下来将学习如何使用命令行属性更改端口号。

步骤1 - 创建可执行JAR文件后,使用命令java -jar 运行它。步骤2 - 使用下面给出的屏幕截图中给出的命令,使用命令行属性更改Spring Boot应用程序的端口号。

注 - 可以使用分隔符 - 提供多个应用程序属性。

属性文件

属性(properties)文件用于在单个文件中保留N个属性,以便在不同的环境中运行应用程序。在Spring Boot中,属性保存在类路径下的application.properties文件中。

application.properties文件位于src/main/resources目录中。示例application.properties文件的代码如下 -

代码语言:javascript
复制
server.port = 9090
spring.application.name = demoservice

请注意,在上面显示的代码中,Spring Boot应用程序demoservice在端口9090上启动。

YAML文件

Spring Boot支持基于YAML的属性配置来运行应用程序。可以使用application.yml文件代替application.properties。此YAML文件也应保留在类路径中。application.yml文件示例如下 -

代码语言:javascript
复制
spring:
   application:
      name: demoservice
   server:
port: 9090


外部化属性

可以将属性保存在不同的位置或路径中,而不是将属性文件保存在类路径下。在运行JAR文件时,可以指定属性文件路径。可以使用以下命令在运行JAR时指定属性文件的位置 -

代码语言:javascript
复制
-Dspring.config.location = C:\\application.properties

使用@Value注解

@Value注释用于读取Java代码中的环境或应用程序属性值。读取属性值的语法如下所示 -

代码语言:javascript
复制
@Value("${property_key_name}")

请看下面的示例,它显示了如何使用@Value批注读取Java变量中的spring.application.name属性值的语法。

代码语言:javascript
复制
@Value("${spring.application.name}")

请遵守下面给出的代码以便更好地理解 -

代码语言:javascript
复制
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 DemoApplication {
   @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'。

要解决占位符问题,可以使用下面给出的thr语法设置属性的默认值 -

代码语言:javascript
复制
@Value("${property_key_name:default_value}")
@Value("${spring.application.name:demoservice}")


Spring Boot活动配置文件

Spring Boot支持基于Spring活动配置文件的不同属性。例如,可以保留两个单独的文件进行开发和生产,以运行Spring Boot应用程序。

application.properties中的Spring活动配置文件

下面来了解如何在application.properties 中使用Spring活动配置文件。默认情况下,application.properties将用于运行Spring Boot应用程序。如果想使用基于配置文件的属性,可以为每个配置文件保留单独的属性文件,如下所示 -

文件:application.properties -

代码语言:javascript
复制
server.port = 8080
spring.application.name = demoservice

文件:application-dev.properties -

代码语言:javascript
复制
server.port = 9090
spring.application.name = demoservice

文件:application-prod.properties -

代码语言:javascript
复制
server.port = 4431
spring.application.name = demoservice

在运行JAR文件时,需要根据每个属性文件指定spring活动配置文件。默认情况下,Spring Boot应用程序使用application.properties 文件。设置Spring活动文件的命令如下所示 -

在控制台日志中看到活动的配置文件名称,如下所示 -

代码语言:javascript
复制
   The following profiles are active: dev

现在,Tomcat已经开始使用端口9090(http),如下所示 -

代码语言:javascript
复制
   main] s.b.c.e.t.TomcatEmbeddedServletContainer : 
   Tomcat started on port(s): 9090 (http)

可以设置生产活动配置文件,如下所示 -

在控制台日志中看到活动的配置文件名称,如下所示 -

代码语言:javascript
复制
  main] com.yiibai.demo.DemoApplication  :
   The following profiles are active: prod

现在,Tomcat开始使用4431端口(http),如下所示 -

代码语言:javascript
复制
 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这样的单独文件。以下是将Spring活动配置文件保留在application.yml文件中的示例代码。请注意,分隔符(---)用于分隔application.yml文件中的每个配置文件。

代码语言:javascript
复制
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


命令设置开发活动配置文件如下 -

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-07-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 落叶飞翔的蜗牛 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 命令行属性
  • 属性文件
  • YAML文件
  • 外部化属性
  • 使用@Value注解
  • Spring Boot活动配置文件
  • application.properties中的Spring活动配置文件
  • application.yml的Spring活动配置文件
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档