springboot yml配置文件值注入方式

 更新时间:2022年01月19日 11:19:43   作者://try  
这篇文章主要介绍了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

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

server:
  port: 8080
person:
  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)
@SpringBootTest
public class DemoApplicationTests {
    @Autowired
    Person person=new Person();
    @Test
    public void contextLoads() {
        System.out.println(person);
    }
}

运行

在这里插入图片描述

结果:

在这里插入图片描述

自动注入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配置文件到实体类中

/**
 * 在需要注入的class类上加上这3个注解即可
 */
@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;

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Maven最佳实践之一个好的parent依赖基础

    Maven最佳实践之一个好的parent依赖基础

    今天小编就为大家分享一篇关于Maven最佳实践之一个好的parent依赖基础,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • 详解MyBatis的Dao层实现和配置文件深入

    详解MyBatis的Dao层实现和配置文件深入

    这篇文章主要为大家详细介绍了MyBatis的Dao层实现和配置文件深入,文中的示例代码讲解详细,感兴趣的小伙伴快来跟随小编一起学习一下
    2022-07-07
  • spring 整合 mybatis 中数据源的几种配置方式(总结篇)

    spring 整合 mybatis 中数据源的几种配置方式(总结篇)

    因为spring 整合mybatis的过程中, 有好几种整合方式,尤其是数据源那块,经常看到不一样的配置方式,总感觉有点乱,所以今天有空总结下,感兴趣的朋友跟随脚本之家小编一起学习吧
    2018-05-05
  • 基于Java8 Stream API实现数据抽取收集

    基于Java8 Stream API实现数据抽取收集

    这篇文章主要介绍了基于Java8 Stream API实现数据抽取收集,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Spring使用Configuration注解管理bean的方式详解

    Spring使用Configuration注解管理bean的方式详解

    在Spring的世界里,Configuration注解就像是一位细心的园丁,它的主要职责是在这个繁花似锦的园子里,帮助我们声明和管理各种各样的bean,本文给大家介绍了在Spring中如何优雅地管理你的bean,需要的朋友可以参考下
    2024-05-05
  • Java ClassLoader类加载器基础详解

    Java ClassLoader类加载器基础详解

    这篇文章主要为大家介绍了Java ClassLoader类加载器基础详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • Java正则表达式的实例操作指南

    Java正则表达式的实例操作指南

    这篇文章主要给大家介绍了关于Java正则表达式的实例操作指南,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Spring和SpringBoot之间的区别

    Spring和SpringBoot之间的区别

    这篇文章主要介绍了Spring和SpringBoot之间的区别,帮助大家更好的理解和学习使用这两种框架,感兴趣的朋友可以了解下
    2021-04-04
  • SpringBoot整合Freemarker实现页面静态化的详细步骤

    SpringBoot整合Freemarker实现页面静态化的详细步骤

    这篇文章主要介绍了SpringBoot整合Freemarker实现页面静态化,第一步要创建项目添加依赖,本文分步骤给大家详细讲解,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-10-10
  • Java Swing组件布局管理器之FlowLayout(流式布局)入门教程

    Java Swing组件布局管理器之FlowLayout(流式布局)入门教程

    这篇文章主要介绍了Java Swing组件布局管理器之FlowLayout(流式布局),结合实例形式分析了Swing组件布局管理器FlowLayout流式布局的常用方法及相关使用技巧,需要的朋友可以参考下
    2017-11-11

最新评论