溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

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

發(fā)布時間:2022-01-19 13:23:35 來源:億速云 閱讀:150 作者:kk 欄目:開發(fā)技術(shù)

這篇文章跟大家分析一下“springboot yml配置文件值的注入方式是什么”。內(nèi)容詳細(xì)易懂,對“springboot yml配置文件值的注入方式是什么”感興趣的朋友可以跟著小編的思路慢慢深入來閱讀一下,希望閱讀后能夠?qū)Υ蠹矣兴鶐椭O旅娓【幰黄鹕钊雽W(xué)習(xí)“springboot yml配置文件值的注入方式是什么”的知識吧。

yml配置文件值注入

搭建項(xiàng)目

參考 IDEA快速搭建spring-boot項(xiàng)目(Spring initializr)

pom.xml

創(chuàng)建項(xiàng)目后,還需在pom.xml中的<dependencies>標(biāo)簽添加該依賴。

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

創(chuàng)建實(shí)體類

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,內(nèi)容為:

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);
    }
}

運(yùn)行

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

結(jié)果:

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

自動注入yml文件和properties文件

在springboot中,如果需要使用到配置文件中的數(shù)據(jù),自動注入即可,非常方便,但是在使用yml中的屬性時,自動注入?yún)s失效了? 發(fā)現(xiàn),如果是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配置文件到實(shí)體類中

/**
 * 在需要注入的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 * * * ?

代碼中直接注入

如果是在代碼中使用單獨(dú)的屬性,不需要將屬性都注入到class中,那么可直接使用注解注入到變量中,在代碼中直接使用

無論是yml還是properties都可以直接注入,不需要其他配置

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

例如:

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

springboot是什么

springboot一種全新的編程規(guī)范,其設(shè)計(jì)目的是用來簡化新Spring應(yīng)用的初始搭建以及開發(fā)過程,SpringBoot也是一個服務(wù)于框架的框架,服務(wù)范圍是簡化配置文件。

關(guān)于springboot yml配置文件值的注入方式是什么就分享到這里啦,希望上述內(nèi)容能夠讓大家有所提升。如果想要學(xué)習(xí)更多知識,請大家多多留意小編的更新。謝謝大家關(guān)注一下億速云網(wǎng)站!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI