05 SpringBoot 配置文件详解-application.properties

      Spring Boot 提供了大量的自动配置,极大地简化了spring 应用的开发过程,当用户创建了一个 Spring Boot 项目后,即使不进行任何配置,该项目也能顺利的运行起来。当然,用户也可以根据自身的需要使用配置文件修改 Spring Boot 的默认设置。

SpringBoot 默认使用以下 2 种全局的配置文件,其文件名是固定的。

  • application.properties

  • application.yml

    application.properties与 application.yaml都可以作为Spring Boot的配置文件,只是书写格式不同而已,在 Spring Boot 启动时被自动读取。当然也可以同时使用,但同级目录下读取的顺序是先读取application.properties,读取application.yaml。该配置文件的存放路径如下图所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

本节我们将详细介绍 application.properties的语法及使用

下面是一个简单的 application.properties属性配置文件。

server.port=8080

Properties 语法

properties的语法如下:

使用properties的key=value形式
使用层级递进关系。
从最高层到最低层逐个低级,中间使用点"."间隔
例如:

server.address=localhost/170.20.10.112 #可以写IP或域名
server.port=80 #表示监听的80端口,默认是8080
spring.datasource.driver-class-name=com.mysql.jdbc.Driver #数据库驱动
spring.datasource.url=jdbc:mysql://localhost:3306/cqyddx?useUnicode=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root

Properties常用写法

properties支持以下三种数据结构:

  • 对象:键值对的集合
  • 数组:一组按次序排列的值
  • 字面量:单个的、不可拆分的值

类准备:

注意:使用需要添加依赖

<dependency>
     <groupId>org.projectlombok</groupId>
     <artifactId>lombok</artifactId>
     <optional>true</optional>
 </dependency>

User类:

@Data
@AllArgsConstructor
@Component
@ConfigurationProperties(prefix = "user")
public class User {
    private String username;
    private Integer age;
    private Book book;
    private Date birth;
    private String[] hobby;
    private List<String> booksName;
    private Map<String, Object> books;
    private Set<Double> salary;
    public User() {        System.out.println("创建user bean");    }
} 
 
@Data
@AllArgsConstructor
@Component
public class Book {
    private String bookName;
    private Double bookPrice;
    public Book(){
        System.out.println("创建book bean");
    }
}
 
@SpringBootApplication
public class SpringbootApplication {
 
    public static void main(String[] args) {
 
        //1、返回IOC容器
        ConfigurableApplicationContext run = SpringApplication.run(SpringbootApplication.class, args);
 
        User user =run.getBean("user",User.class);
        System.out.println(user.getUsername());
        System.out.println(user);
    }
}

properties字面量写法

​ 字面量是指单个的,不可拆分的值,例如:数字、字符串、布尔值、以及日期:date、boolean、string、number、null等。
​ 在 properties中,使用“key[=]value”的形式表示一对键值对(空格不能省略),如 user.username= “xiatian”,user.age= 32。

user.username=xiatian is good

user.age=32

user.birth=2020/09/10 13:14:15

properties对象写法

在 properties中,对象可能包含多个属性,每一个属性都是一对键值对。properties 为对象提供了 以下写法:

使用递进表示对象与属性的层级关系。
user.name=“xiatian”

user.age=32

properties 数组、List、Map、Set 行内写法

#数组行内写法
user.hobby=篮球,足球,排球

#list集合行内写法
user.booksname=计算机基础,javaEE框架,springboot

#map的行内写法
user.books.chinese={key1=spring,key2=springmvc,key3=springboot,key4=springcloud,0=活着,1=孙子兵法,2=诗经,hz=活着,szbf=孙子兵法,sj=诗经}

#set的行内写法
user.salary=6000,7000,8000
测试结果如下:



User(

    username=xiatian is good,

    age=32,

    book=Book{bookName='springboot', bookPrice=102.0},

    birth=Thu Sep 10 13:14:15 CST 2020,

    hobby=[篮球, 足球, 排球],

    booksName=[计算机基础, javaEE框架, springboot],

    books={

     chinese={

       key1=spring,

       key2=springmvc,

       key3=springboot,

       key4=springcloud,

       0=活着,

       1=孙子兵法,

       2=诗经,

       hz=活着,

       szbf=孙子兵法,

       sj=诗经}

    },

    salary=[6000.0, 7000.0, 8000.0]

);
 

properties 数组、List、Map、Set 非行内写法 及 复合结构写法

#数组写法 使用[x]表示数组中的元素,写法如下:
user.hobby[0]=篮球
user.hobby[1]=足球
user.hobby[2]=排球

#list集合写法 使用[x]表示集合中的元素,写法如下:
user.booksname[0]=计算机基础
user.booksname[1]=javaEE框架
user.booksname[2]=springboot

##map集合的key value 使用key表示map中的key,写法如下:
user.books.key1=spring
user.books.key2=springmvc
user.books.key3=springboot
user.books.key4=springcloud

#map集合的value是map形式 使用chinese[key]表示map中的key为map类型,写法如下:
user.books.chinese[0]=活着
user.books.chinese[1]=孙子兵法
user.books.chinese[2]=诗经

#map集合的value是map形式 使用chinese.xxx表示map中的key为map类型,写法如下:
user.books.chinese.hz=活着
user.books.chinese.szbf=孙子兵法
user.books.chinese.sj=诗经

#set集合以下标方式赋值 使用[x]表示集合中的元素,写法如下:
user.salary[0]=6000
user.salary[1]=7000
user.salary[2]=8000

#复合结构写法 使用递进表示对象与属性的层级关系
user.book.bookName=springboot
user.book.bookPrice=102

测试结果如下:

User(
    username=xiatian is good,
    age=32,
    book=Book{bookName='springboot', bookPrice=102.0},
    birth=Thu Sep 10 13:14:15 CST 2020,
    hobby=[篮球, 足球, 排球],
    booksName=[计算机基础, javaEE框架, springboot],
    books={
     chinese={
       key1=spring,
       key2=springmvc,
       key3=springboot,
       key4=springcloud,
       0=活着,
       1=孙子兵法,
       2=诗经,
       hz=活着,
       szbf=孙子兵法,
       sj=诗经}
    },
    salary=[6000.0, 7000.0, 8000.0]
);

相关推荐

  1. springboot配置文件Tomcat和mvc详细配置

    2024-06-16 05:24:01       19 阅读
  2. PaddleSeg分割框架解读[02] 配置文件config详解

    2024-06-16 05:24:01       26 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-16 05:24:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-16 05:24:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-16 05:24:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-16 05:24:01       18 阅读

热门阅读

  1. 新增套餐——后端

    2024-06-16 05:24:01       6 阅读
  2. 向mysql发送一个请求的时候,mysql到底做了什么

    2024-06-16 05:24:01       8 阅读
  3. 什么是 Linux ?(Linux)

    2024-06-16 05:24:01       7 阅读
  4. 前端面试题日常练-day70 【面试题】

    2024-06-16 05:24:01       8 阅读
  5. 服务器硬件基础知识

    2024-06-16 05:24:01       5 阅读
  6. 13.零拷贝

    2024-06-16 05:24:01       8 阅读
  7. 【定义通讯数据类型】LCM搭建系统通讯

    2024-06-16 05:24:01       7 阅读
  8. Cesium4Unreal - # 011 加载显示geojson

    2024-06-16 05:24:01       7 阅读
  9. Spring Boot 项目中的 GC Root

    2024-06-16 05:24:01       8 阅读
  10. Docker常用命令

    2024-06-16 05:24:01       7 阅读
  11. mysql 分组后每个取最新的一条记录

    2024-06-16 05:24:01       10 阅读