0


【Spring】配置文件的使用

本篇文章主要介绍 Spring 配置文件的使用,主要讲解 properties 和 yml 两种配置文件。写入配置文件的配置信息可在Spring 官方配置查到。烦请路过的大佬给小的留一个赞🤩


文章目录

1. 什么是配置文件

配置文件是一种计算机文件,可以为一些计算机程序配置参数和初始设置。

2. 为什么需要配置文件

在我们平时写程序的时候,有些参数是经常改变的,而这种改变不是我们预知的。比如说我们开发了一个操作数据库的模块,在开发的时候我们连接本地的数据库那么IP ,数据库名称,表名称,数据库主机等信息是我们本地的,要使得这个操作数据的模块具有通用性,那么以上信息就不能写死在程序里。通常我们的做法是用配置文件来解决

3. Java 应用常见的配置文件格式

Java 中常用的有 properties 配置文件和 yml 配置文件

请添加图片描述

3.1 特殊说明

  1. 理论上讲 properties 可以和 yml 一起存在于一个项目当中,当 properties 和 yml 一起存在一个项 目中时,如果配置文件中出现了同样的配置,比如 properties 和 yml 中都配置了“server.port”, 那么这个时候会以 properties 中的配置为主,也就是 .properties 配置文件的优先级最高,但加载完 .properties 文件之后,也会加载 .yml 文件的配置信息。
  2. 虽然理论上来讲 .properties 可以和 .yml 共存,但实际的业务当中,我们通常会采取一种统一的配置文件格式,这样可以更好的维护(降低故障率)。这就好像连锁店的服饰一样,不管是老款的服装还是新款的服装,一定要统一了才好看。

4. *.properties

4.1 properties 配置文件说明

properties 配置文件是最早期的配置文件格式,也是创建 Spring Boot 项目默认的配置文件。

4.2 properties 基本语法

properties 是以键值的形式配置的,key 和 value 之间是以“=”连接的,如:

# 配置数据库
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8 
spring.datasource.username=root
spring.datasource.password=root

4.3 注意

一般properties 配置文件默认字符集为 GBK 格式,所以不能出现中文

5. *.yml

5.1 yml 配置文件说明

yml 是 YMAL 是缩写,它的全称 Yet Another Markup Language 翻译成中文就是“另一种标记语言”。 yml 是一个可读性高,易于理解,用来表达数据序列化的格式。它的语法和其他高级语言类似,并且可以简单表达清单(数组)、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件等。

5.2 yml 基本语法

yml 是树形结构的配置文件,它的基础语法是“key: value”,注意 key 和 value 之间使用英文冒汗加空 格的方式组成的,其中的空格不可省略。格式如下:

# yml 配置数据库spring:datasource:url: jdbc:mysql://127.0.0.1:3306/shujvku?characterEncoding=utf8
    username: root
    password:123456

6. 修改 Spring 配置的一些配置信息

# 修改 Spring 默认 banner 是否显示
spring.main.banner-mode=false

# 修改 Spring 开始日志是否打印
spring.main.log-startup-info=off

# 修改 banner 样式
spring.banner.image.location=classpath:1.png

# true 打印完全日志
debug=false

# 打印日志的路径
logging.file.name=D:\\JAVA\\myapp.log

# 设置日志输出级别
# logging.level  +   包名,会影响包下所有的输出级别,直接是类名,就仅仅此类
logging.level.com.hsq.demo=debug

7. 在配置文件中配置对象

具体怎么拿出对象的属性值,在第 8 点中一并说明

hsq.name=hsq
hsq.age=20

8. 在 Bean 读取配置信息的三种方法

# 配置文件中的信息
hsq.name=hsq
hsq.age=20

8.1 使用 Spring 提供的 Environment 对象

使用 @Autowired 注解注入 Environment 对象

@Slf4j@ComponentpublicclassReadFromConfig1{@AutowiredpublicReadFromConfig1(Environment environment){String name = environment.getProperty("hsq.name");
        log.info("读取到的 hsq.name = "+ name);String age = environment.getProperty("hsq.age");
        log.info("读取到的 age = "+ age);}}

请添加图片描述

8.2 使用 @Value 注解

@Slf4j@ComponentpublicclassReadFromConfig2{@AutowiredpublicReadFromConfig2(@Value("${hsq.name}")String name,@Value("${hsq.age}")String age
    ){

        log.info("读取到的 hsq.name = "+ name);
        log.info("读取到的 age = "+ age);}}

请添加图片描述

8.3 使用注解 @ConfigurationProperties 将配置信息包装成对象

@Component@ConfigurationProperties(prefix ="hsq")publicclassHsqConfig{String name;String age;// setter 方法必须有,否则不会生效publicvoidsetAge(String age){this.age = age;}publicvoidsetName(String name){this.name = name;}publicStringgetAge(){return age;}publicStringgetName(){return name;}}
@Slf4j@ComponentpublicclassReadFromConfig3{@AutowiredpublicReadFromConfig3(HsqConfig hsqConfig){
        log.info("读取到的 hsq.name = "+ hsqConfig.getName());
        log.info("读取到的 age = "+ hsqConfig.getAge());}}

请添加图片描述

9. 使用配置文件配置 MySQL 数据库

9.1 将配置信息写入配置文件

spring:datasource:url: jdbc:mysql://127.0.0.1:3306/java22_diaocha?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghaiusername: root
    password: root

9.2 读取配置信息并包装成对象

这里的 setter 方法由 lombok 中的 @Data 自动生成

@Component@ConfigurationProperties(prefix ="spring.datasource")@DatapublicclassMySQLConfig{String url;String username;String password;}

9.3 将配置信息对象注册进 Spring 库

以方法注册的方式注册

@Slf4j@ConfigurationpublicclassAppConfig{@BeanpublicDataSourcedataSource(@AutowiredMySQLConfig config){MysqlDataSource dataSource =newMysqlDataSource();
        log.info("MySQL 配置如下:"+ dataSource);
        dataSource.setURL(config.url);
        dataSource.setUser(config.username);
        dataSource.setPassword(config.password);return dataSource;}}

9.4 写 SQL 操作数据库

@Slf4j@SpringBootApplicationpublicclassDemoApplication{@SneakyThrowspublicstaticvoidmain(String[] args){ConfigurableApplicationContext context =SpringApplication.run(DemoApplication.class, args);// 从库中得到 dataSource 对象DataSource dataSource = context.getBean(DataSource.class);try(Connection c = dataSource.getConnection()){String sql ="select uid, username, password from users";try(PreparedStatement ps = c.prepareStatement(sql)){
            log.info("执行的 SQL = "+ ps);try(ResultSet rs = ps.executeQuery()){while(rs.next()){
                  log.info("uid = {}, username = {}, password = {}",
                        rs.getInt("uid"),
                        rs.getString("username"),
                        rs.getString("password"));}}}}}}

打印得到从库中查到的数据,说明配置成功

请添加图片描述

标签: spring java spring boot

本文转载自: https://blog.csdn.net/m0_56975154/article/details/127542985
版权归原作者 hssq 所有, 如有侵权,请联系我们删除。

“【Spring】配置文件的使用”的评论:

还没有评论