SpringBoot--注入指定的配置文件

Posted Z && Y

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot--注入指定的配置文件相关的知识,希望对你有一定的参考价值。

1. SpringBoot--注入指定的配置文件

SpringBoot–yaml语法讲解 & 注入配置文件

  • @PropertySource :加载指定的配置文件;
  • @configurationProperties:默认从全局配置文件中获取值;

1.1 resources目录下新建一个user.properties文件

在这里插入图片描述

user.properties

name=天骄

1.2 指定加载user.properties文件

package com.tian.springboot02config.pojo;


import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

@Component //注册bean
@PropertySource(value = "classpath:user.properties")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    //直接使用@value
    @Value("${name}") //从配置文件中取值 EL表达式
    private String name;
    @Value("#{9*2}")  // #{SPEL} Spring表达式
    private int age;
    @Value("男")  // 字面量
    private String sex;
}

1.3 测试

package com.tian.springboot02config;

import com.tian.springboot02config.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class Springboot02ConfigApplicationTests {
    @Autowired
    User user;

    @Test
    void contextLoads() {
        System.out.println(user);
    }

}

出现乱码
在这里插入图片描述

properties配置文件在写中文的时候,会有乱码 , 我们需要去IDEA中设置编码格式为UTF-8;

在这里插入图片描述

重新测试
在这里插入图片描述

1.4 小结

@Value这个使用起来并不友好!我们需要为每个属性单独注解赋值,比较麻烦;我们来看个功能对比图
在这里插入图片描述

  • @ConfigurationProperties只需要写一次即可 , @Value则需要每个字段都添加
  • 松散绑定:这个什么意思呢? 比如我的yml中写的last-name,这个和lastName是一样的, 后面跟着的字母默认是大写的。这就是松散绑定。可以测试一下
  • JSR303数据校验 , 这个就是我们可以在字段是增加一层过滤器验证 , 可以保证数据的合法性
  • 复杂类型封装,yml中可以封装对象 , 使用value就不支持

结论:

  • 配置yml和配置properties都可以获取到值 , 强烈推荐 yml;
  • 如果我们在某个业务中,只需要获取配置文件中的某个值,可以使用一下 @value;
  • 如果说,我们专门编写了一个JavaBean来和配置文件进行一一映射,就直接@configurationProperties,不要犹豫!


以上是关于SpringBoot--注入指定的配置文件的主要内容,如果未能解决你的问题,请参考以下文章

springboot加载指定的属性文件(properties和yml文件)

3.springboot:springboot配置文件(配置文件YAML属性文件值注入<@Value@ConfigurationProperties@PropertySource,@Im(代码片

3springboot:springboot配置文件(配置文件YAML属性文件值注入<@Value@ConfigurationProperties@PropertySource,@Imp(代码片

Springboot学习笔记-常用注入组件方式

springboot加载指定的属性文件(properties和yml文件)

springboot中从配置文件里获取值的方式