Spring Boot快速入门 -> Spring Boot 配置文件(二)

本文深入探讨Spring Boot的配置,包括默认的`application.properties`,介绍YAML配置的优势和使用,以及如何进行外部配置。讨论了YAML的树状层级结构,与properties文件的优先级,并提供了多YML文件配置和外部配置文件的实践方法。
摘要由CSDN通过智能技术生成

前言:不忘初心,寻找最初的编程快感!

Spring Boot配置文件

默认配置

  1. 创建Spring Boot项目时,会默认在resource文件夹下创建appllication.propertities属性文件。
    SpringApplication类会在对应位置检索该文件:
  • 当前目录的/config子目录
  • 当前目录
  • classpath中的/config包
  • classpath
  1. 实践:
  • resource文件夹下创建appllication.propertities属性文件
    在这里插入图片描述
  • 创建pojo实体类:MysqlDataSource接收配置属性
    在这里插入图片描述
  • 在当前目录新建config包并创建ApplicationConfig配置类
@Configuration
//指定配置文件路径
@PropertySource("classpath:application.properties")
public class ApplicationConfig {

    //注入属性
    @Value("${jdbc.url}")
    private String url;

    @Value("${jdbc.driverClassName}")
    private String driverClassName;

    @Value("${jdbc.username}")
    private String username;

    @Value("${jdbc.password}")
    private String password;

    @Bean
    public MysqlDataSource getDataSource(){
        MysqlDataSource dataSource = new MysqlDataSource();
        dataSource.setUrl(url);
        dataSource.setDriverClassName(driverClassName);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        return dataSource;
    }

}
  • 测试:在浏览器中输出JDBC配置类信息(重命名了下MysqlDataSource->MyDataSource)
    -在这里插入图片描述
    在这里插入图片描述

YAML配置

yaml(yml)是JSON的超集,一般用于指定分层配置。SpringApplication类能够自动支持YAML,将其作为Properties属性文件的替代者。Spring提供了YamlPropertiesFactoryBean将YAML加载为Properties以及YamlMapFactoryBean将YAML加载为Map。

Yml配置文件的特征:

  • 树状层级结构展示配置项
  • 配置项之间如果有关系的话需要分行空两格
  • 配置项如果有值的话,那么需要在:之后空一格再写配置项值;
  • 多个Yml配置文件:在spring boot中是被允许的。这些配置文件的命名必须为application-*.yml,并且这些 配置文件必须要在application.yml配置文件中激活之后才可以使用。
  • 如果properties和yml配置文件同时存在,那么这两类配置文件都有效,在两个配置文件中如果存在同名的配置项的话会以properties文件的为主
  1. 将原properties文件转换成yaml配置文件
    在这里插入图片描述
    文件配置代码如下:
server:
  port: 8081

jdbc:
  url: mysql://127.0.0.1:3306/springboot
  driverClassName: com.mysql.jdbc.Driver
  username: root
  password: a753224656

多yml文件配置如下:
在这里插入图片描述
2. 在pom.xml中加入如下配置

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <!--不传递依赖-->
    <optional>true</optional>
</dependency>
  1. 在config目录下新建ApplicationProperties类,并标记注解@ConfigurationProperties;
/*
配置获取application.yml文件中的jdbc属性
 */
@ConfigurationProperties(prefix = "jdbc")
public class ApplicationProperties {

    private String url;

    private String driverClassName;

    private String username;

    private String password;

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getDriverClassName() {
        return driverClassName;
    }

    public void setDriverClassName(String driverClassName) {
        this.driverClassName = driverClassName;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "MysqlDataSource{" +
                "url='" + url + '\'' +
                ", driverClassName='" + driverClassName + '\'' +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }

}
  1. 新建ApplicationConfig配置类接收Properties属性;
  • 使用@EnableConfigurationProperties让配置 @ConfigurationProperties 注解的类生效。
@Configuration
//指定配置文件路径
//@PropertySource("classpath:application.properties")
@EnableConfigurationProperties(ApplicationProperties.class)
public class ApplicationConfig {
     @Bean
     public MyDataSource getDataSource(ApplicationProperties properties){
         MyDataSource dataSource = new MyDataSource();
         dataSource.setUrl(properties.getUrl());
         dataSource.setDriverClassName(properties.getDriverClassName());
         dataSource.setUsername(properties.getUsername());
         dataSource.setPassword(properties.getPassword());
         return dataSource;
     }
}
  • 不使用@EnableConfigurationProperties,直接在方法上配置 @ConfigurationProperties
    @Bean
    @ConfigurationProperties(prefix = "jdbc")
    public MyDataSource getDataSource(){
        return new MyDataSource();
    }
  1. 测试
    在这里插入图片描述
    测试结果如下:
    在这里插入图片描述

外部配置

涉及一些数据库或者第三方账户信息,出于安全考虑,我们可以在运行程序的时候通过参数指定一个外部配置文件的方式来解决。

java -jar myspringboot.jar --spring.config.location=外部配置文件路径
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值