文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

springboot yml配置文件值的注入方式是什么

2023-06-26 07:14

关注

这篇文章跟大家分析一下“springboot yml配置文件值的注入方式是什么”。内容详细易懂,对“springboot yml配置文件值的注入方式是什么”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习“springboot yml配置文件值的注入方式是什么”的知识吧。

yml配置文件值注入

搭建项目

参考 IDEA快速搭建spring-boot项目(Spring initializr)

pom.xml

创建项目后,还需在pom.xml中的<dependencies>标签添加该依赖。

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency>

创建实体类

package com.demo.demo;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.stereotype.Component;@Component@ConfigurationProperties(prefix = "person")public class Person {    private String name;    private int age;    @Override    public String toString() {        return "person{" +                "name='" + name + '\'' +                ", age=" + age +                '}';    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }}

spring boot核心配置文件application.yml

将application.properties文件后缀改为.yml,内容为:

server:  port: 8080person:  name: 小狗  age: 21

测试类

package com.demo.demo;import com.demo.demo.Person;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.context.junit4.SpringRunner;@RunWith(SpringRunner.class)@SpringBootTestpublic class DemoApplicationTests {    @Autowired    Person person=new Person();    @Test    public void contextLoads() {        System.out.println(person);    }}

运行

springboot yml配置文件值的注入方式是什么

结果:

springboot yml配置文件值的注入方式是什么

自动注入yml文件和properties文件

在springboot中,如果需要使用到配置文件中的数据,自动注入即可,非常方便,但是在使用yml中的属性时,自动注入却失效了? 发现,如果是properties文件,直接注入即可,但是yml需要增加一个配置

yml文件的自动注入class

yml文件相对于properties较整洁和简便,在自动注入的使用需要增加配置

增加pom依赖

  <!--*.yml auto inject config-->   <dependency>       <groupId>org.springframework.boot</groupId>       <artifactId>spring-boot-configuration-processor</artifactId>       <optional>true</optional>   </dependency>

增加配置类

public class YamlPropertyLoaderFactory  extends DefaultPropertySourceFactory {    @Override    public PropertySource<?> createPropertySource(String name, EncodedResource resource) throws IOException {        if (null == resource) {            super.createPropertySource(name, resource);        }        return new YamlPropertySourceLoader().load(resource.getResource().getFilename(), resource.getResource(),null);    }}

注入指定yml配置文件到实体类中

@Configuration@PropertySource(value = "classpath:application-quartz.yml", factory = YamlPropertyLoaderFactory.class)@ConfigurationProperties(prefix = "quartz")public class JobTime {    private String articleCarwler;    private String earthlySweetSentenceApi;    private String rainbowFartApi;    private String qqRobotMsgTimer;}

说明:

@PropertySource(value = "classpath:application-quartz.yml", factory = YamlPropertyLoaderFactory.class)

这个注解表示注入哪个配置文件,指定第二步中的配置类

@ConfigurationProperties(prefix = "quartz")

表示指定配置文件中的属性是什么前缀,可忽略,例如:quartz.articleCarwler=0 0/5 * * * ?

Properties配置文件自动注入

properties类型的配置文件就比较简单,不需要增加上面的依赖和配置,直接指定注入即可

直接注入属性到class

@Configuration@PropertySource("classpath:/application.properties")@ConfigurationProperties(prefix = "quartz")public class JobTime {    private String task1;    private String task2;}

说明:

@PropertySource("classpath:/application.properties")

指定配置文件名称

@ConfigurationProperties(prefix = "quartz")

指定配置文件中的key的前缀,可忽略此注解, 例如:quartz.task1=0 3 * * * ?

代码中直接注入

如果是在代码中使用单独的属性,不需要将属性都注入到class中,那么可直接使用注解注入到变量中,在代码中直接使用

无论是yml还是properties都可以直接注入,不需要其他配置

使用注解:@Value("${key}") 就可以直接注入。

例如:

    @Value("${quartz.taks1}")    private String taks1;

springboot是什么

springboot一种全新的编程规范,其设计目的是用来简化新Spring应用的初始搭建以及开发过程,SpringBoot也是一个服务于框架的框架,服务范围是简化配置文件。

关于springboot yml配置文件值的注入方式是什么就分享到这里啦,希望上述内容能够让大家有所提升。如果想要学习更多知识,请大家多多留意小编的更新。谢谢大家关注一下编程网网站!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯