欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot中讀取配置的七種方法總結

 更新時間:2024年08月07日 11:13:11   作者:碼到三十五  
在Spring Boot應用中,讀取配置是一項基礎且重要的任務,Spring Boot提供了多種靈活的方式來讀取配置,以滿足不同場景下的需求,本文將詳細介紹Spring Boot中讀取配置的幾種常用方法,需要的朋友可以參考下

引言

在Spring Boot應用中,讀取配置是一項基礎且重要的任務。Spring Boot提供了多種靈活的方式來讀取配置,以滿足不同場景下的需求。本文將詳細介紹Spring Boot中讀取配置的幾種常用方法.

1. 使用@Value注解

@Value注解是最直接且常用的讀取配置的方式。它可以將配置文件中的屬性值注入到Spring管理的Bean的字段中。

@Component
public class MyBean {
    @Value("${some.key1}")
    private String someKey1;

     @Value("${some.key2:defaultVal}")
    private String someKey2;

    public void initSomeKey3(@Value("${some.key3}")String key){
        ...
    }
}
  • @Value注解只能讀取單個配置進行賦值,無法讀取整個配置文件批量賦值
  • 可以在屬性名稱后面使用冒號(:default-value)的形式添加默認值
  • 只能用于被Spring管理的Bean中使用,或Java配置@Configuration類
  • 可以用于字段、構造函數(shù)參數(shù)、方法參數(shù)和方法上。當將它放在方法上時,Spring容器初始化時會調(diào)用該方法,并將配置屬性的值作為方法的參數(shù)傳遞進去.

2. 使用ConfigurationProperties注解

ConfigurationProperties注解允許將配置文件的屬性綁定到一個Bean上,這樣可以更方便地管理和使用配置信息。與@Value注解相比,ConfigurationProperties支持復雜類型的配置,如列表、集合等。

@Component
@ConfigurationProperties(prefix = "some")
public class SomeProperties {
    private String key;
    private List<String> values;

    // ... getters and setters
}

@ConfigurationProperties使用注意事項:

  1. 配置文件屬性名與類字段名的映射規(guī)則

    • 默認情況下,@ConfigurationProperties會將配置文件中的屬性名與類字段名進行映射。例如,配置文件中的student.name會自動映射到類字段name上。
    • 如果配置文件中的屬性名與類字段名不一致,可以使用@Value注解或通過setter方法來指定映射關系。
  2. 支持類型轉換
    @ConfigurationProperties支持自動類型轉換,能夠將配置文件中的字符串值轉換為目標字段的類型。例如,將字符串轉換為整數(shù)、布爾值等。如果無法進行類型轉換,會拋出異常。

  3. 默認值和可選屬性

    • 可以為@ConfigurationProperties注解的字段設置默認值,以防止配置文件中缺少對應的屬性。可以使用":"符號指定默認值,例如@Value("${my.property:default-value}")。
    • 另外,可以使用required屬性來指定某個屬性是否為必需的。
  4. 配置項的驗證和校驗
    可以使用JSR-303/349規(guī)范的注解對@ConfigurationProperties注解的字段進行驗證和校驗。例如,使用@NotBlank、@Min、@Max等注解來限制屬性值的有效性。

3. 使用Environment對象

Environment對象提供了訪問配置信息的方法??梢酝ㄟ^注入Environment對象來獲取配置屬性值。

@Component
public class MyBean {
    private final Environment environment;

    @Autowired
    public MyBean(Environment environment) {
        this.environment = environment;
    }

    public void someMethod() {
        String someKey = environment.getProperty("some.key");
        // ...
    }
}

// 通過獲取Environment 
@Component
public class MyEnvironmentAware implements EnvironmentAware {

    private Environment env;
    
    @Override
    public void setEnvironment(Environment environment) {
        this.env = environment;
    }

    public String getKey() {
        return env.getProperty("some.key");
    }
}

4. 使用@PropertySource注解

@PropertySource注解允許指定額外的屬性文件作為配置源。這對于讀取非application.propertiesapplication.yml文件中的配置非常有用。

/**
 * 綁定自定義properties配置
*/
@Data
@Configuration
@PropertySource("classpath:custom.properties")
public class MyPropertiesComponent {
    @Value("${some.key}")
    private String someKey;

    // ...
}

5. 自定義配置文件讀取

在某些情況下,需要讀取非標準的配置文件(如JSON、XML等)。這時,可以通過編寫自定義的配置文件讀取邏輯來實現(xiàn)。例如,使用Jackson庫來讀取JSON配置文件。

@Service
public class ConfigService {
    private MyConfig config;

    @PostConstruct
    public void init() throws IOException {
        ObjectMapper mapper = new ObjectMapper();
        InputStream inputStream = new ClassPathResource("config.json").getInputStream();
        this.config = mapper.readValue(inputStream, MyConfig.class);
    }

    // ... 使用config的方法
}

6. 使用命令行參數(shù)

Spring Boot應用也支持通過命令行參數(shù)來傳遞配置信息??梢酝ㄟ^實現(xiàn)CommandLineRunner接口來訪問命令行參數(shù)。

import org.springframework.boot.CommandLineRunner;  
import org.springframework.stereotype.Component;  
  
@Component  
public class CommandLineAppStartupRunner implements CommandLineRunner {  
  
    @Override  
    public void run(String... args) throws Exception {  
        if (args.length > 0) {  
            System.out.println("接收到命令行參數(shù):");  
            for (String arg : args) {  
                System.out.println(arg);  
            }  
        } else {  
            System.out.println("沒有接收到命令行參數(shù)。");  
        }  
    }  
}

打包并運行Spring Boot應用。在運行時通過命令行傳遞參數(shù)。

java -jar your-spring-boot-app.jar arg1 arg2 arg3

arg1、arg2和arg3是作為命令行參數(shù)傳遞給應用的.

7. 使用Spring Expression Language (SpEL)

SpEL可以在@Value注解中使用,以更復雜的表達式形式來讀取配置值。例如,可以結合系統(tǒng)屬性或環(huán)境變量來動態(tài)獲取配置。

@Value("#{systemProperties['some.key'] ?: 'default'}")
private String someKey;

結論

Spring Boot提供了多種靈活且強大的方式來讀取配置信息。開發(fā)者可以根據(jù)具體需求和場景選擇最適合的方法來管理和使用配置。無論是簡單的鍵值對還是復雜的配置結構,Spring Boot都能提供相應的支持來簡化配置讀取的過程。

以上就是SpringBoot中讀取配置的七種方法總結的詳細內(nèi)容,更多關于SpringBoot讀取配置的資料請關注腳本之家其它相關文章!

相關文章

  • SpringBoot實現(xiàn)單點登錄的實現(xiàn)詳解

    SpringBoot實現(xiàn)單點登錄的實現(xiàn)詳解

    在現(xiàn)代的Web應用程序中,單點登錄(Single?Sign-On)已經(jīng)變得越來越流行,在本文中,我們將使用Spring?Boot構建一個基本的單點登錄系統(tǒng),需要的可以參考一下
    2023-05-05
  • Java中instanceof關鍵字實例講解

    Java中instanceof關鍵字實例講解

    大家好,本篇文章主要講的是Java中instanceof關鍵字實例講解,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • Java Web之限制用戶多處登錄實例代碼

    Java Web之限制用戶多處登錄實例代碼

    本篇文章主要介紹了Java Web之限制用戶多處登錄實例代碼,可以限制單個用戶在多個終端登錄。非常具有實用價值,需要的朋友可以參考下。
    2017-03-03
  • 使用maven實現(xiàn)redis與idea的連接問題

    使用maven實現(xiàn)redis與idea的連接問題

    這篇文章主要介紹了使用maven實現(xiàn)redis與idea的連接問題,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-07-07
  • Java?Web項目中解決中文亂碼方法總結(三種最新方法)

    Java?Web項目中解決中文亂碼方法總結(三種最新方法)

    這篇文章主要介紹了Java?Web項目中解決中文亂碼方法總結,本文給大家分享三種最新解決方法,需要的朋友可以參考下
    2022-06-06
  • Spring?Boot分離配置文件的多種方式總結

    Spring?Boot分離配置文件的多種方式總結

    Spring Boot可以外部化程序配置,以便可以在不同環(huán)境中使用相同的應用程序代碼;當然Spring Boot可以將配置文件進行拆分,以便于激活不同的運行環(huán)境,下面這篇文章主要給大家總結介紹了關于Spring?Boot分離配置文件的多種方式,需要的朋友可以參考下
    2022-11-11
  • 基于Java 注解(Annotation)的基本概念詳解

    基于Java 注解(Annotation)的基本概念詳解

    基于Java 注解(Annotation)的基本概念詳解
    2013-04-04
  • springboot做代理分發(fā)服務+代理鑒權的實現(xiàn)過程

    springboot做代理分發(fā)服務+代理鑒權的實現(xiàn)過程

    這篇文章主要介紹了springboot做代理分發(fā)服務+代理鑒權的實現(xiàn)過程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • 使用Swagger直接上傳文件的方法

    使用Swagger直接上傳文件的方法

    這篇文章主要介紹了使用Swagger直接上傳文件的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • Ribbon的饑餓加載(eager-load)模式解讀

    Ribbon的饑餓加載(eager-load)模式解讀

    這篇文章主要介紹了Ribbon的饑餓加載(eager-load)模式解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04

最新評論