×
Spring Boot教程Spring Boot简介Spring Boot快速入门Spring Boot引导过程Spring Boot Tomcat部署Spring Boot构建系统Spring Boot代码结构Spring Boot Bean和依赖注入Spring Boot运行器(Runner)Spring Boot应用程序属性Spring Boot日志Spring Boot构建RESTful Web服务Spring Boot异常处理Spring Boot拦截器Spring Boot Servlet过滤器Spring Boot Tomcat端口号Spring Boot Rest模板Spring Boot文件处理Spring Boot服务组件Spring Boot Thymeleaf示例Spring Boot使用RESTful Web服务Spring Boot CORS支持Spring Boot国际化Spring Boot调度Spring Boot启用HTTPSSpring Boot Eureka服务器Spring Boost Eureka服务注册Spring Boot Zuul代理服务器和路由Spring Boot云配置服务器Spring Boot云配置客户端Spring Boot ActuatorSpring Boot管理服务器Spring Boot管理客户端Spring Boot启用Swagger2Spring Boot创建Docker镜像Spring Boot跟踪微服务日志Spring Boot Flyway数据库Spring Boot发送电子邮件Spring Boot HystrixSpring Boot Web SocketSpring Boot批量服务Spring Boot Apache KafkaSpring Boot单元测试用例Spring Boot Rest控制器单元测试Spring Boot数据库源(连接数据库)Spring Boot保护Web应用程序

Spring Boot应用程序属性


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

命令行属性

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

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

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

属性文件

属性(properties)文件用于在单个文件中保留N个属性,以便在不同的环境中运行应用程序。 在Spring Boot中,属性保存在类路径下的application.properties文件中。
application.properties文件位于src/main/resources目录中。示例application.properties文件的代码如下 -

server.port = 9090
spring.application.name = demoservice

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

YAML文件

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

spring:
   application:
      name: demoservice
   server:
port: 9090

外部化属性

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

-Dspring.config.location = C:\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 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语法设置属性的默认值 -

@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.属性将用于运行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 文件。 设置Spring活动文件的命令如下所示 -

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

2017-11-26 08:13:16.322  INFO 14028 --- [           
   main] com.yiibai.demo.DemoApplication  :
   The following profiles are active: dev

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

2017-11-26 08:13:20.185  INFO 14028 --- [           
   main] s.b.c.e.t.TomcatEmbeddedServletContainer : 
   Tomcat started on port(s): 9090 (http)

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

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

2017-11-26 08:13:16.322  INFO 14028 --- [           
   main] com.yiibai.demo.DemoApplication  :
   The following profiles are active: prod

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

2017-11-26 08:13:20.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这样的单独文件。
以下是将Spring活动配置文件保留在application.yml文件中的示例代码。 请注意,分隔符(---)用于分隔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

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

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

2017-11-26 08:41:37.202  INFO 14104 --- [           
   main] com.yiibai.demo.DemoApplication  : 
   The following profiles are active: dev

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

2017-11-26 08:41:46.650  INFO 14104 --- [           
   main] s.b.c.e.t.TomcatEmbeddedServletContainer : 
   Tomcat started on port(s): 9090 (http)

设置生产活动配置文件的命令如下 -

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

2017-11-26 08:43:10.743  INFO 13400 --- [    
   main] com.yiibai.demo.DemoApplication  : 
   The following profiles are active: prod

这将在端口4431(http)上启动Tomcat,如下所示:

2017-11-26 08:43:14.473  INFO 13400 --- [     
   main] s.b.c.e.t.TomcatEmbeddedServletContainer : 
   Tomcat started on port(s): 4431 (http)

分类导航

关注微信下载离线手册

bootwiki移动版 bootwiki
(群号:472910771)