最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot讀取多環(huán)境配置文件的幾種方式

 更新時間:2023年10月30日 08:29:58   作者:Lxlxxx  
這篇文章主要給大家介紹了SpringBoot讀取多環(huán)境配置文件的幾種方式,文章通過代碼示例介紹的非常詳細,具有一定的參考價值,需要的朋友可以參考下

Properties配置文件注入

如果我們還在使用相對較老的Properties文件的方式,存放我們項目的配置信息,那么我們可以通過*@PropertySource*注解、配置@Value的方式讀取我們resource目錄下的配置文件;

//applicaiton.properties配置
spring.redis.host: 127.0.0.1
spring.redis.port: 3306
spring.redis.password :123456

@Component
@PropertySources(value = "classpath:application.properties")
public class RedisProperties {
    @Value("${spring.redis.host}")
    private String host;
    @Value("${spring.redis.port}")
    private String port;
    @Value("${spring.redis.password}")
    private int password;
}

如果不想寫@Value注解,可以在類頭加@ConfigurationProperties(prefix = “spring.redis”)注解;

不同環(huán)境文件的讀取

Spring boot項目是優(yōu)先讀取 application.yml 或者 application.properties,profile機制會根據(jù)不同環(huán)境讀取不同的配置文件

//需要我們在applicaiton.properties設置環(huán)境變量
spring.profiles.actives = dev

Yml的方式注入

如果使用yml的方式配置文件,如何實現(xiàn)動態(tài)注入呢?

//application.yml
spring:
  redis:
    host: 127.0.0.1
    port: 6379
    password: password

YamlPropertiesFactoryBean類讀取

可以采用Spring beans包下對yml文件配置讀取的類,YamlPropertiesFactoryBean,還有一個YamlMapFactoryBean返回map集合類型的配置;

    @GetMapping("getRedisConfig")
    public Properties getRedisConfig(){
        YamlPropertiesFactoryBean yamlProFb = new YamlPropertiesFactoryBean();
        yamlProFb.setResources(new ClassPathResource("redis-file.yml"));
        Properties properties = yamlProFb.getObject();
        System.out.println(properties.get("redis.host"));
        System.out.println(properties.get("redis.port"));
        System.out.println(properties.toString());
        return properties;
    }


PropertySourcesPlaceholderConfigurer

也可以采用PropertySourcesPlaceholderConfigurer自定義配置類,使用該類進入屬性注入,這個類主要解決的是YamlPropertiesFactoryBean只限于在一個接口使用,如果在定義一個接口不用YamlPropertiesFactoryBean去加載配置類,是無法讀取的; 所以我們用PropertySourcesPlaceholderConfigurer,該類是實現(xiàn)Aware接口,而最根本還是調(diào)BeanFactoryPostProcessor,bean工廠的后置處理器;

所以我們這么配置,就可以實現(xiàn)全局的配置文件屬性讀?。?/p>

@Configuration
public class YmlRedisConfig {
    
    @Bean
    public static PropertySourcesPlaceholderConfigurer yamlConfigurer(){
        PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
        YamlPropertiesFactoryBean yaml = new YamlPropertiesFactoryBean();
        yaml.setResources(new ClassPathResource("redis-file.yml"));
        configurer.setProperties(Objects.requireNonNull(yaml.getObject()));
        return configurer;
    }
}

Environment實現(xiàn)屬性動態(tài)注入

Spring boot在啟動的時候,會構(gòu)建一個org.springframework.core.env.Environment對象,用于存儲配置類; 根據(jù)下圖,我們可以看到最終都會去實現(xiàn)PropertyResolver接口;

[image:2C39516B-C70F-485E-9F88-A4A7CA7F4292-2581-00001ED1E5808FF4/4CE2B56C-5B64-4756-B38A-18BA819200E1.png]

@Autowired
private Environment env;

@Bean
public DataSource dataSource() throws PropertyVetoException, SQLException {
    DruidDataSource dataSource = new DruidDataSource();
    dataSource.setUrl(env.getProperty("mysql.connection.url"));
    dataSource.setUsername(env.getProperty("mysql.connection.username"));
    dataSource.setPassword(env.getProperty("mysql.connection.password"));
    return dataSource;
}

輸入、輸出流原生態(tài)注入

InputStreamReader字節(jié)流讀取application.propertie,Properties.load()方法 進行讀??;

@Bean
public Properties initRedisConfig() throws IOException {
    Properties properties =new Properties();
    InputStreamReader inputStreamReader =new InputStreamReader(
            this.getClass().getResourceAsStream("application.properties"), StandardCharsets.UTF_8);
    properties.load(inputStreamReader);
    return properties;
}

到此這篇關(guān)于SpringBoot讀取多環(huán)境配置文件的幾種方式的文章就介紹到這了,更多相關(guān)SpringBoot讀取多環(huán)境配置文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 23種設計模式(4) java生成器模式

    23種設計模式(4) java生成器模式

    這篇文章主要為大家詳細介紹了23種設計模式之java生成器模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • SpringBoot配置文件密碼加密與解密的操作代碼

    SpringBoot配置文件密碼加密與解密的操作代碼

    我們在SpringBoot項目當中,會把數(shù)據(jù)庫的用戶名密碼等配置直接放在yaml或者properties文件中,這樣維護數(shù)據(jù)庫的密碼等敏感信息顯然是有一定風險的,所以我們需要給密碼加解密,本文給大家介紹了SpringBoot配置文件密碼加密與解密的操作代碼,需要的朋友可以參考下
    2024-12-12
  • javaweb判斷當前請求是否為移動設備訪問的方法

    javaweb判斷當前請求是否為移動設備訪問的方法

    這篇文章主要為大家詳細介紹了javaweb判斷當前請求是否為移動設備訪問的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • java?讀寫鎖的使用及它的優(yōu)點

    java?讀寫鎖的使用及它的優(yōu)點

    這篇文章主要介紹了java?讀寫鎖的使用及它的優(yōu)點,讀寫鎖的特點就是是讀讀不互斥、讀寫互斥、寫寫互斥,下面具體使用分享需要的小伙伴可以參考一下
    2022-05-05
  • Springboot如何同時裝配兩個相同類型數(shù)據(jù)庫

    Springboot如何同時裝配兩個相同類型數(shù)據(jù)庫

    這篇文章主要介紹了Springboot如何同時裝配兩個相同類型數(shù)據(jù)庫,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • java實現(xiàn)系統(tǒng)托盤示例

    java實現(xiàn)系統(tǒng)托盤示例

    桌面的系統(tǒng)托盤即當程序最小化或者關(guān)閉按鈕程序并沒有退出,而是最小化在任務狀態(tài)區(qū)域,下面是使用java實現(xiàn)系統(tǒng)托盤示例
    2014-03-03
  • java實現(xiàn)二維碼生成的幾個方法(推薦)

    java實現(xiàn)二維碼生成的幾個方法(推薦)

    本篇文章主要介紹了java實現(xiàn)二維碼生成的幾個方法(推薦),具有一定的參考價值,有興趣的可以了解一下。
    2016-12-12
  • JAVA基礎(chǔ)之數(shù)組和集合區(qū)別對比分析

    JAVA基礎(chǔ)之數(shù)組和集合區(qū)別對比分析

    文章主要介紹了Java中數(shù)組和集合的基本概念、使用方法以及它們之間的區(qū)別,文章還探討了不可變集合的創(chuàng)建方式及其線程安全和不可篡改的優(yōu)勢,感興趣的朋友跟隨小編一起看看吧
    2025-11-11
  • Spring?自定義propertyEditor的示例代碼

    Spring?自定義propertyEditor的示例代碼

    這篇文章主要介紹了Spring?自定義propertyEditor的示例代碼,本文結(jié)合示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-12-12
  • Java實現(xiàn)簡單的抽牌游戲

    Java實現(xiàn)簡單的抽牌游戲

    這篇文章主要為大家詳細介紹了Java實現(xiàn)簡單的抽牌游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04

最新評論

安多县| 沭阳县| 崇州市| 乌拉特后旗| 祁阳县| 涟源市| 砀山县| 江源县| 扬中市| 松潘县| 郧西县| 贵南县| 布尔津县| 金秀| 宁陕县| 方正县| 盈江县| 集贤县| 嵊泗县| 武邑县| 淳化县| 新竹市| 秦安县| 淳安县| 四平市| 永城市| 璧山县| 翁牛特旗| 高陵县| 龙游县| 西城区| 伊川县| 大渡口区| 腾冲县| 德清县| 卢氏县| 北票市| 进贤县| 周口市| 厦门市| 会宁县|