SpringBoot笔记(二):配置文件

虽然SpringBoot约定优于配置,但是在一些特殊情况下,我们依然需要自己定义一些配置,如数据库。下面我们就来研究下SpringBoot是如何配置的。

配置文件样式

SpringBoot中有两种格式的配置文件,properties和yaml。二者的优缺点如下:

  • properties文件是无序的,比较繁琐
  • yaml文件简介有序,而且在一些SpringCloud的配置中优势非常明显
  • yaml文件不支持@PropertyResource注解

配置文件位置及优先级

生成的SpringBoot项目默认在resources目录生成application.properties配置文件,但这个配置文件的位置并不是唯一,一共有4个位置可以放置配置文件,优先级如下:

  • 当前项目的根目录下的config目录下
  • 当前项目根目录下
  • 当前项目resources目录下的config目录下
  • 当前项目resources目录下
    SpringBoot笔记(二):配置文件
    配置文件的位置和默认名称可以通过IDEA的一些配置进行改变,但是笔者认为没有必要为了改变而改变,对此感兴趣的可以参考文末给出的江南一点雨的参考文章。

获取配置文件属性

自定义person类

@Component
@Data
public class Person {
    private Long id;
    private String name;
    private int age;
}

application.properties配置文件中

  person.id= 1
  person.age= 15
  person.name= zhangsan

采用Spring传统属性注入方式@Value

@Component
@Data
public class Person {
    @Value("${person.id}")
    private Long id;
    @Value("${person.name}")
    private String name;
    @Value("${person.age}")
    private int age;
}

注意: Person类要加上@Component交给Spring容器管理,否则无法注入。

application的配置文件中我们一般存放系统配置,这时我们一般采取引入person.properties文件,类似于数据库配置操作。在Spring中通常采用这种方式引入额外的配置文件


在SpringBoot中我们只要加上@PropertySource(“classpath:person.properties”)。

yaml文件:yaml文件配置格式简洁有序,但是无法使用@PropertySource引入,下面演示下yaml文件
注入数组和javaBean集合的属性配置
配置文件:

my:
  cities:
    - beijing
    - shanghai

java代码:

  @Compent
  @ConfigurationProperties(prefix = "my")
  public class My{
    private List cities;
  }

javaBean集合注入
配置文件:

  provinces:
     cities:
       - name: xuzhou
         lng: 120.23
         lat: 33.45
       - name: suzhou
         lng: 120.26
         lat: 28.45

java代码:

  @Compent
  @ConfigurationProperties(prefix = "provinces")
  public class Provinces{
      private List cities;
  }

安全获取属性

SpringBoot中引入了类型安全注入,当实体类的变量非常多时,使用类型安全注入能减少开发量,避免出错。

@Component
@Data
@PropertySource("classpath:person.properties")
@ConfigurationProperties(prefix = "person")
public class Person {
    private Long id;
    private String name;
    private int age;
}

切换开发环境

在实际的项目开发中,我们需要不同的配置环境,标准格式:application-{环境}.yml

  • 开发环境:application-dev.yml
  • 测试环境:application-test.yml
  • 生产环境:application-prod.yml
    在application.yml中开启配置:
  spring:
    profiles:
       active: dev

在application-dev.yml中:

  server:
    port: 8088

此时重启项目,项目的启动端口就从8080切换到8088了。

Original: https://www.cnblogs.com/hs5201314tx/p/15923976.html
Author: 浪淘沙V
Title: SpringBoot笔记(二):配置文件

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/579652/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 在Nginx下部署SSL证书并重定向至HTTPS

    步骤一:下载 Nginx 版证书文件,解压以后可以看到一个 .key 文件和 .crt/.pem 文件 步骤二:上传证书。把上面的 .key 文件和 .crt/.pem 文件上传到…

    Java 2023年5月30日
    076
  • CentOS7.4下使用Nginx配置Asp.net Core和添加Https证书步骤

    博客园 :当前访问的博文已被密码保护 请输入阅读密码: Original: https://www.cnblogs.com/zxtceq/p/14173558.htmlAuthor…

    Java 2023年5月30日
    064
  • 2、内置注解

    @Ove rri d e 定义iava.lan .Override 中此注释只适用于修辞万法《表示一个方法声明打算 重写超类中的另一个方氵去声明. @Deprecated : 定义…

    Java 2023年6月8日
    079
  • SpringBoot接口-如何优雅的写Controller并统一异常处理?

    SpringBoot接口如何对异常进行统一封装,并统一返回呢?以上文的参数校验为例,如何优雅的将参数校验的错误信息统一处理并封装返回呢?@pdai 为什么要优雅的处理异常 如果我们…

    Java 2023年6月6日
    071
  • 湖南微音软件×JNPF:对标企业人才,实现员工精细化管理

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Java 2023年6月5日
    095
  • Java常见集合遍历方式

    public static void main(String[] args) { ListFor(2); } public static void ListFor(int a){ …

    Java 2023年6月6日
    067
  • Transaction-Mybatis源码

    github地址:https://github.com/dchack/Mybatis-source-code-learn (欢迎star) TransactionFactory 官…

    Java 2023年6月14日
    088
  • 甲骨文严查Java授权,换openJDK要避坑

    背景 外媒The Register报道,甲骨文稽查企业用户,近期开始将把过去看管较松散的Java授权加入。 甲骨文针对标准版Java(Java SE)有2种商业授权。2019年4月…

    Java 2023年5月29日
    059
  • Java 常用类总结(SE基础)

    本篇博客对java常用类相关知识进行了归纳总结,比较详细,适用于学习和复习。 字符串相关的类 1.1 String String是一个 final类,代表不可变的字符序列。不可被继…

    Java 2023年6月7日
    079
  • Java 16 新特性:record类

    以前我们定义类都是用 class关键词,但从Java 16开始,我们将多一个关键词 record,它也可以用来定义类。 record关键词的引入,主要是为了提供一种更为简洁、紧凑的…

    Java 2023年6月9日
    067
  • 20220728-在IDEA中进行Java的断点调试Debug

    断点调试介绍 断点调试是指在程序的某一行设置一个断点,在调试时,程序运行到这一行就会停住,然后你可以一步一步往下调试,调试过程中可以看各个变量当前的值,出错的话,调试到出错的代码行…

    Java 2023年6月15日
    091
  • 软件工程 统一过程软件(RUP) 第5篇随笔

    1.RUP简介 本质: 是”一般的过程框架” 为软件开发,进行不同抽象层之间”映射”,安排其开发活动的次序,指定任务和需要开发的志平…

    Java 2023年6月16日
    071
  • Java开发学习(九)—-IOC之核心容器

    这里所说的核心容器,大家可以把它简单的理解为 ApplicationContext,前面虽然已经用到过,但是并没有系统的介绍过,接下来咱们从以下几个问题入手来下容器的相关知识: 如…

    Java 2023年5月29日
    062
  • Springboot学习

    具体内容: 包含核心基础、Web原理、单元测试、数据访问、指标监控等章节 SpringBoot 官方文档 https://www.cnblogs.com/youcoding/p/1…

    Java 2023年5月30日
    094
  • 最大和的连续子数组

    1、题目背景 给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和,子数组是数组中的一个连续部分 2、代码实现 public cla…

    Java 2023年6月8日
    065
  • Java基础语法01——变量与运算符

    Java基础语法01——变量与运算符 本文是对Java基础语法的第一部分的学习,包括注释;标识符的命名规则与规范;变量的数据类型分类以及转换;以及六种运算符(算术、赋值、比较、逻辑…

    Java 2023年6月5日
    068
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球