jndi数据源配置_SpringBoot配置文件详解

本文介绍了Spring Boot的自动化配置原理,并重点讲解了如何进行外部化配置,包括配置文件、自定义参数、参数引用、使用随机数以及命令行参数的设置。特别强调了YAML格式的配置文件和Spring Boot配置优先级顺序,以及如何通过命令行参数动态调整配置。此外,还探讨了自定义参数和参数引用的方法,以及如何在启动时使用命令行参数修改属性值。
摘要由CSDN通过智能技术生成

前言

约定 > 配置 > 编码

Spring Boot 对于开发人员最大的好处在于可以对 Spring 应用进行自动配置。在SpringBoot项目中,很多时候需要用到一些配置的信息,这些信息可能在测试环境和生产环境下会有不同的配置,针对这种情况,项目所需属性就需要灵活设置,尽可能地不要将这些配置在代码中写死,最好就是写到配置文件中,以便后面根据实际业务需求灵活修正。

1、自动化配置

Spring Boot会根据应用中声明的第三方依赖来自动配置 Spring 框架,而不需要进行显式的声明。比如当声明了对 HSQLDB 的依赖时,Spring Boot 会自动配置成使用 HSQLDB 进行数据库操作。

Spring Boot 推荐采用基于Java 注解的配置方式,而不是传统的 XML。只需在主配置Java类引@EnableAutoConfiguration”注解就可以启用自动配置。当然,根据目前SpringBoot版本的迭代更新,在多数情况下,我们只需注入@SpringBootApplication这个注解即可替代。

而且,Spring Boot 的自动配置功能是没有侵入性的,只是作为一种基本的默认实现。开发人员可以通过定义其他bean来替代自动配置所提供的功能。比如当应用中定义了自己的数据源bean时,自动配置所提供的 HSQLDB 就不会生效。这给予了开发人员很大的灵活性。既可以快速的创建一个可以立即运行的原型应用,又可以不断的修改和调整以适应应用开发在不同阶段的需要。可能在应用最开始的时候,嵌入式的内存数据库(如 HSQLDB)就足够了,在后期则需要换成MySQL数据库。Spring Boot 使得这样的切换变得很简单。

2、外部化配置

在应用中管理配置并不是一个容易的任务,尤其是在应用需要部署到多个环境中时。通常会需要为每个环境提供一个对应的属性文件,用来配置各自的数据库连接信息、服务器信息和第三方服务账号等。

通常的应用部署会包含开发、测试和生产等若干个环境,不同的环境之间的配置存在覆盖关系。测试环境中的配置会覆盖开发环境,而生产环境中的配置会覆盖测试环境。Spring 框架本身提供了多种的方式来管理配置属性文件,Spring 3.1 之前可以使用 PropertyPlaceholderConfigurer。Spring 3.1 引入了新的环境(Environment)和概要信息(Profile)API,是一种更加灵活的处理不同环境和配置文件的方式。不过 Spring 这些配置管理方式的问题在于选择太多,让开发人员无所适从。Spring Boot 提供了一种统一的方式来管理应用的配置,允许开发人员使用属性文件、YAML 文件、环境变量和命令行参数来定义优先级不同的配置值。
Spring Boot 所提供的配置优先级顺序比较复杂。按照优先级从高到低的顺序,具体的列表如下所示。

命令行参数。

  • 通过 System.getProperties() 获取的 Java 系统参数。
  • 操作系统环境变量。
  • 从 java:comp/env 得到的 JNDI 属性。
  • 通过 RandomValuePropertySource 生成的“random.*”属性。
  • 应用 Jar 文件之外的属性文件。
  • 应用 Jar 文件内部的属性文件。
  • 在应用配置 Java 类(包含“@Configuration”注解的 Java 类)中通过“@PropertySource”注解声明的属性文件。
  • 通过“SpringApplication.setDefaultProperties”声明的默认属性。

Spring Boot 的这个配置优先级看似复杂,其实是很

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值