SpringBoot的配置文件properties和yml怎么写?

发布于:2022-08-08 ⋅ 阅读:(445) ⋅ 点赞:(0)

开始看这篇文章之前,我先说明,我会重点讲解yml的配置,更加简单方便,但是语法要求较严格。

注意:

  • properties的优先级比yml高
  • 一个项目只有一个配置文件。
  • 下面properties我简称P,yml简称Y

端口配置

P

# 应用服务 WEB 访问端口
server.port=8080

Y

server:
  port: 8080

自定义配置

假如需要一个密钥key才能调用学习api,那么key怎么配置,如何获取?

  • 定义学习api密钥(随便取名)

P

# 定义学习api密钥
study.key=123456
study.user=nickbears

Y

# 定义学习api密钥
study:
  key: 123456
  user: nickbears 

如何读取配置文件?(为了效果明显,我用Bean生命周期里的afterPropertiesSet方法,为了在加载前读取配置进行打印操作)

这是主函数:

@SpringBootApplication
public class Springboot02Application implements InitializingBean {

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

    /**
     * 参数设置完成之后,执行此方法
     * @throws Exception
     */
    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println();
        System.out.println("afterPropertiesSet:");
        System.out.println();

    }
}

读取方式 1 @Value

@SpringBootApplication
public class Springboot02Application implements InitializingBean {
    @Value("${study.key}") //读取配置文件
    private String studyKey;

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

    /**
     * 参数设置完成之后,执行此方法
     * @throws Exception
     */
    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println();
        System.out.println("afterPropertiesSet:");
        System.out.println(studyKey);
        System.out.println();
    }
}

在这里插入图片描述

注意:接下来我会省略以上部分代码,只保留核心代码。

MYSQL配置

  • 没有对比没有伤害,谁简单?
  • 使用yml记得:后面一定要加一个空格
  • yml分层级写

P

# 设置MYSQL 的服务器连接信息
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/java100?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=123456

Y

# 设置MYSQL 的服务器连接信息
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/java100?characterEncoding=utf8
    username: root
    password: 123456

yml读取不同数据类型

# 测试数据读取不同数据类型
# 测试数据读取不同数据类型
Y
myprofile:
  isdebug: true

读取

@SpringBootApplication
public class Springboot02Application implements InitializingBean {
    @Value("${study.key}") //读取配置文件
    private String studyKey;

    @Value("${myprofile.isdebug}")
    private boolean flag;

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

    /**
     * 参数设置完成之后,执行此方法
     * @throws Exception
     */
    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println();
        System.out.println("afterPropertiesSet:");
        System.out.println("studyKey:"+studyKey);
        System.out.println("isdbug:"+flag);
        System.out.println();

    }
}

在这里插入图片描述

读取方式2 @ConfigurationProperties

  • 我要读取一个对象

Y

# 读取对象
user:
  id: 1
  name: nickbers
  age: 18

创建实体类

  • get 和 set 必须的,我用lombook的Data注解表示
  • @Component是必须的
  • @ConfigurationProperties 映射是必须的
@Component //spring启动时将配置文件映射到当前类上
@ConfigurationProperties("user")
@Data //get 和上 set方法
public class User {
    private int id;
    private String name;
    private int age;
}

属性注入,打印查看效果

@SpringBootApplication
public class Springboot02Application implements InitializingBean {
    @Value("${study.key}") //读取配置文件
    private String studyKey;

    @Value("${myprofile.isdebug}")
    private boolean flag;

    @Autowired
    private User user;

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

    /**
     * 参数设置完成之后,执行此方法
     * @throws Exception
     */
    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println();
        System.out.println("afterPropertiesSet:");
        System.out.println("studyKey:"+studyKey);
        System.out.println("isdbug:"+flag);
        System.out.println("User:"+user);
        System.out.println();

    }
}

在这里插入图片描述

更多关于Spring配置项的可以去看官网学习,或者关注我的gitee,里面有详细的文档和代码供大家下载浏览,详情看我的第一篇文章,我的gitee 和 wiki文档

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到