Spring Boot 应用程序属性

  • 应用程序属性

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

    Spring Boot应用程序将命令行属性转换为Spring Boot Environment属性。命令行属性优先于其他属性源。默认情况下,Spring Boot使用8080端口号启动Tomcat。让我们学习如何通过使用命令行属性来更改端口号。
    • 步骤1-创建可执行的JAR文件
    • 步骤2-使用命令java –jar <JARFILE> --server.port=9090运行它。
    springboot
    注意 -您可以使用定界符-提供多个应用程序属性。
  • 属性文件

    属性文件用于在单个文件中保留“N”个属性,以在不同的环境中运行应用程序。在Spring Boot中,属性保存在classpath下的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.properties,我们可以使用application.yml文件。该YAML文件也应保留在类路径中。下面给出了示例application.yml文件-
    
    spring:
       application:
          name: demoservice
       server:
    port: 9090
    
  • 外部属性

    可以将属性保留在不同的位置或路径中,而不是将属性文件保留在classpath下。运行JAR文件时,我们可以指定属性文件路径。您可以在运行JAR时使用以下命令指定属性文件的位置-
    
    -Dspring.config.location = C:\application.properties
    
    springboot
  • @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会抛出Illegal Argument异常,因为无法解析值“$ {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.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激活属性的命令如下所示-
    springboot
    您可以在控制台日志上看到激活的配置文件名称,如下所示:
    
    2020-04-26 08:13:16.322  INFO 14028 --- [           
       main] com.tutorialspoint.demo.DemoApplication  :
       The following profiles are active: dev
    
    现在,Tomcat已在端口9090(http)上启动,如下所示-
    
    2020-04-26 08:13:20.185  INFO 14028 --- [           
       main] s.b.c.e.t.TomcatEmbeddedServletContainer : 
       Tomcat started on port(s): 9090 (http)
    
    您可以如下所示设置生产环境active配置文件-
    springboot
    您可以在控制台日志上看到激活的配置文件名称,如下所示:
    
    2020-04-26 08:13:16.322  INFO 14028 --- [           
       main] com.tutorialspoint.demo.DemoApplication  :
       The following profiles are active: prod
    
    现在,Tomcat在端口4431(http)上启动,如下所示-
    
    2020-04-26 08:13:20.185  INFO 14028 --- [          
       main] s.b.c.e.t.TomcatEmbeddedServletContainer :
       Tomcat started on port(s): 4431 (http)
    
  • 用于application.yml的Spring激活配置文件

    让我们了解如何使Spring保持application.yml的激活配置文件。我们可以将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
    
    命令设置开发环境激活配置文件如下-
    springboot
    您可以在控制台日志上看到激活的配置文件名称,如下所示:
    
    2020-04-26 08:41:37.202  INFO 14104 --- [           
       main] com.tutorialspoint.demo.DemoApplication  : 
       The following profiles are active: dev
    
    现在,Tomcat在端口9090(http)上启动,如下所示-
    
    2020-04-26 08:41:46.650  INFO 14104 --- [           
       main] s.b.c.e.t.TomcatEmbeddedServletContainer : 
       Tomcat started on port(s): 9090 (http)
    
    下面给出了设置生产激活配置文件的命令-
    
    2020-04-26 08:41:46.650  INFO 14104 --- [           
       main] s.b.c.e.t.TomcatEmbeddedServletContainer : 
       Tomcat started on port(s): 9090 (http)
    
    springboot
    您可以在控制台日志上看到激活的配置文件名称,如下所示:
    
    2020-04-26 08:43:10.743  INFO 13400 --- [    
       main] com.tutorialspoint.demo.DemoApplication  : 
       The following profiles are active: prod
    
    这将在端口4431(http)上启动Tomcat,如下所示:
    
    2020-04-26 08:43:14.473  INFO 13400 --- [     
       main] s.b.c.e.t.TomcatEmbeddedServletContainer : 
       Tomcat started on port(s): 4431 (http)