zoukankan      html  css  js  c++  java
  • 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
    
    Shell

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

    YAML文件

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

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

    外部化属性

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

    -Dspring.config.location = C:\application.properties
    
    Shell

    使用@Value注解

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

    @Value("${property_key_name}")
    
    Shell

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

    @Value("${spring.application.name}")
    
    Shell

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

    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;
       }
    }
    
    Java

    注 - 如果在运行应用程序时未找到该属性,则Spring Boot将抛出非法参数异常,因为无法在值${spring.application.name}中解析占位符'spring.application.name'
    要解决占位符问题,可以使用下面给出的thr语法设置属性的默认值 -

    @Value("${property_key_name:default_value}")
    @Value("${spring.application.name:demoservice}")
    
    Java

    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
    
    Shell

    文件:application-dev.properties -

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

    文件:application-prod.properties -

    server.port = 4431
    spring.application.name = demoservice
    
    Shell

    在运行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
    
    Shell

    现在,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)
    
    Shell

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

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

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

    现在,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)
    
    Shell

    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
    
    YAML

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

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

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

    现在,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)
    
    Shell

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

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

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

    这将在端口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)
  • 相关阅读:
    记录软件工程课程项目开发时遇到的各种小问题(django)
    用python实现逻辑回归
    利用KD树进行异常检测
    PyQt4入门学习笔记(五)
    PyQt4入门学习笔记(四)
    import matplolib 时出现"This probably means that tk wasn't installed properly."的解决方法
    IDEA上安装和使用checkstyle,findbugs,visualVM,PMD插件
    pycharm连接mysql数据库
    基于trie树做一个ac自动机
    用python实现最长公共子序列算法(找到所有最长公共子串)
  • 原文地址:https://www.cnblogs.com/borter/p/12423720.html
Copyright © 2011-2022 走看看