【JavaEE】SpringBoot配置文件的设置及其读取

本文详细介绍了SpringBoot中配置文件的作用,如数据源、日志、缓存等配置,并对比了properties和yml两种格式的用法、优缺点。通过@Value和@ConfigurationProperties注解展示了如何读取配置信息。同时提到了环境特定配置文件的读取方法。
摘要由CSDN通过智能技术生成

目录

配置文件作用

配置文件注意事项

properties

用法

修改字符集

优缺点

yml

用法

优缺点

读取配置文件

使用 @Value注解

读properties配置文件

 读yml配置文件

使用 @ConfigurationProperties 注解

读properties配置文件

读yml配置文件


配置文件作用

SpringBoot的配置文件主要有以下几个作用:

  1. 数据源和持久化:连接数据库、连接池等各种数据源和持久化相关的配置
  2. 日志记录和调试:设置日志记录级别、格式和输出位置等,还有启用远程调试功能等
  3. 缓存管理:设置缓存文件的类型、过期时间等
  4. Web服务配置:设置Web服务器的端口号、静态资源目录和错误页面等
  5. 安全认证:配置身份验证、授权和HTTP等相关安全配置
  6. 消息服务和异步操作:配置异步消息队列、任务调度等各种消息服务和异步处理功能

配置文件注意事项

  1. 必须要有一个主配置文件,名字只能是application.yml(properties)
  2. 每个平台都必要要有一个配置文件
    命名格式只能是 application-XXX.yml(.properties)
                                       只有XXX部分是自定义的
  3. 若各个配置文件中有完全相同的部分,则统一都写到主配置文件中去
  4. 在Java中,配置文件有两种类型:properties和yml,二者理论上可以出现在同一个项目中,但实际开发中只能统一选一个。
  5. properties的优先级较高,原因是properties和yml本质上没有任何区别,都是键值对,系统率先加载yml的,然后加载properties的,这样properties就会覆盖yml的

properties

Properties 是一种常见的配置文件类型,其以键值对(key-value)的形式保存配置信息。Properties 格式的文件通常使用 .properties 后缀名,该文件包含了若干行文本和 ASCII 编码的字符集,其中每一行都表示一个属性的键值对。在 Java 应用程序中,Properties 类也提供了一套 API 来解析和读取这类文件。

用法

这里就修改了服务器的端口号。

更多的用法可以到这里查看Common Application Properties (spring.io)


修改字符集

在properties中可以 用 # 来写注释

通常在IDEA中的properties的字符集是不适配中文的,这就需要我们修改一下。

 


优缺点

优点:

  1. 写法简单,不易出错,就是 key=value ,对于空格之类的也没有要求
  2. 优先级高

缺点:

  1. 冗余性较大
  2. 只能适用于Java项目,无法对其他语言项目适用

特点:是系统默认的配置文件


yml

yml是YAML的缩写,Yet Another Markup Language(另一种标记语言)

它被广泛应用于各种编程语言中,并且比 JSON 和 XML 更加人性化。

用法

优缺点

优点:

  1. 可读性高:语法简洁,易读
  2. 层级结构分明清晰
  3. 支持更多的数据类型
  4. 可以在各种编程语言的项目中使用

缺点:

  1. 学习成本较高,需要掌握其语法规则

读取配置文件

读取配置文件信息的方法有很多,下面将介绍一些常见的方法。


使用 @Value注解

这个注解可以读取单个配置项

读properties配置文件

package com.example.demo.component;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;

@Component
public class ReadProperties {
    @Value("${server.port}")
    private String propertiesString;

    @PostConstruct
    public void getPropertiesString() {
        System.out.println("读取properties类型的配置文件信息" + propertiesString);
    }
}

 

 读yml配置文件

package com.example.demo.component;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;

@Component
public class ReadYml {
    // 必须使用 ${} 才能从配置文件中读出来
    @Value("${server.port}")
    private String ymlString;

    @PostConstruct
    public void getYmlString() {
        System.out.println("读取yml类型的配置文件信息" + ymlString);
    }
}

 

 


使用 @ConfigurationProperties 注解

与@value不同的是,这个@configurationProperties可以读取多个配置项

读properties配置文件

首先要有一个与之对应的Bean对象,该对象的属性名要和配置文件的Key相同才可以

其中prefix的内容是从配置文件中的哪个路径去找,多级下的使用 .  来分开,yml也是同理

package com.example.demo.repository;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Repository;

@Repository
@ConfigurationProperties(prefix = "spring.datasource")
@Data
public class SpringDatasource {
    private String url;
    private String username;
    private String password;
}
package com.example.demo;

import com.example.demo.repository.SpringDatasource;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication implements InitializingBean {

	@Autowired
	private SpringDatasource springDatasource;

	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}


	@Override
	public void afterPropertiesSet() throws Exception {
		System.out.println(springDatasource);
	}
}

读yml配置文件

读取的方法和properties相同。


指定文件来读取

以上两个读取配置文件的方法默认读取的是主配置文件中的内容。若是想要读取 环境特定的配置文件,就需要和 @PropertySource 一起使用了。

使用 @PropertySource 注解 来 指定查询配置文件

通过该注解可以指定读取的位置,然后读取出来配置项。

package com.example.demo;

import com.example.demo.repository.SpringDatasource;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.PropertySource;

@SpringBootApplication
@PropertySource("classpath:application-dev.yml")
public class DemoApplication implements InitializingBean {

//	@Autowired
//	private SpringDatasource springDatasource;

	@Value("${server.port}")
	private String port;

	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}


	@Override
	public void afterPropertiesSet() throws Exception {
//		System.out.println(springDatasource);
		System.out.println(port);

	}
}

读取@ConfigurationProperties同上,只需要在加上该注解指定位置即可。


有什么问题评论区支持。希望可以帮到你。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值