开发手册 欢迎您!
软件开发者资料库

Spring Boot - 应用程序属性

Spring Boot应用程序属性 - 从简单和简单的步骤学习Spring Boot,从基本到高级概念,包括简介,快速入门,引导,Tomcat部署,构建系统,代码结构,Spring Bean和依赖注入,Runners,应用程序属性,日志记录等示例,构建RESTful Web服务,异常处理,拦截器,Servlet过滤器,Tomcat端口号,Rest模板,文件处理,服务组件,Thymeleaf,使用RESTful Web服务,CORS支持,国际化,调度,启用HTTPS,Eureka服务器,服务注册Eureka,Zuul代理服务器和路由,Spring云配置服务器,Spring云配置客户端,执行器,管理服务器,管理客户端,启用Swagger2,创建Docker镜像,跟踪微服务日志,Flyway数据库,发送电子邮件,Hystrix,Web套接字,批处理服务,Apache Kafka的Spring,Twilio,单元测试用例,休息控制器单元测试,数据库处理,Secu环网络应用程序,带有JWT的OAuth2,Google云平台,Google OAuth2登录。

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

命令行属性

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

步骤1 : 创建可执行JAR文件后,使用命令 java -jar< JARFILE> 运行它.

步骤2 : 使用下面给出的屏幕截图中给出的命令,使用命令行属性更改Spring Boot应用程序的端口号.

命令行属性JARFILE

注意 : 您可以使用分隔符 : 提供多个应用程序属性.

属性文件

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

application.properties文件位于 src/main中/resources 目录.样本 application.properties 文件的代码在下面给出 :

server.port = 9090spring.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@RestControllerpublic 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 Active Profile

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

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

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

application.properties

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

application-dev.properties

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

application-prod.properties

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

在运行JAR文件时,我们需要根据每个文件指定弹簧活动配置文件属性文件.默认情况下,Spring Boot应用程序使用application.properties文件.设置弹簧活动配置文件的命令显示在下面 :

Prod.Properties Active Dev

您可以在控制台日志中看到活动的个人资料名称,如下所示 :

2017-11-26 08:13:16.322  INFO 14028 --- [              main] com.IT屋.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)

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

生产活动配置文件

你可以看到活跃的profi控制台日志上的文件名如下所示 :

2017-11-26 08:13:16.322  INFO 14028 --- [              main] com.it1352.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的弹簧活动配置文件

让我们了解如何为application.yml保留Spring活动配置文件.我们可以将Spring活动配置文件属性保留在单个 application.yml 文件中.无需使用像application.properties这样的单独文件.

以下是将Spring活动配置文件保存在application.yml文件中的示例代码.请注意,分隔符(---)用于分隔application.yml文件中的每个配置文件.

spring:   application:      name: demoserviceserver:   port: 8080---spring:   profiles: dev   application:      name: demoserviceserver:   port: 9090---spring:    profiles: prod   application:      name: demoserviceserver:    port: 4431

命令设置开发活动配置文件在下面和下面给出;

Prod.Properties Active Dev

您可以看到有效的个人资料名称控制台日志如下所示 :

2017-11-26 08:41:37.202  INFO 14104 --- [              main] com.it1352.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.it1352.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)