<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      springboot自定義文件加載處理

      有沒有一種場景就是不想把自己的配置參數放在springboot的配置文件(application.properties)里,就想自己定一個自己認為耍酷的名字,比如my-redis.yml,my-mysql.properties等,并且這些文件里面的配置也可以同樣的在程序啟動的時候加載到運行環境中。確實,我就有這樣的需求,我自己定義了一個中間件,這個中間件時封裝給其他項目用的,這個中間件的所有配置都放在了一個固定文件里面,當應用運行的時候中間件就可以獲取文件里面的配置。

      要實現這樣的功能,我是這樣做的,栗子如下:

      第一步

      實現EnvironmentPostProcessor類,實現自定義文件的加載和處理

      package io.gitee.javalaoniu.cyml.processor;  
        
      import org.springframework.beans.factory.config.YamlPropertiesFactoryBean;  
      import org.springframework.boot.SpringApplication;  
      import org.springframework.boot.env.EnvironmentPostProcessor;  
      import org.springframework.core.env.ConfigurableEnvironment;  
      import org.springframework.core.env.PropertiesPropertySource;  
      import org.springframework.core.env.PropertySource;  
      import org.springframework.core.io.ClassPathResource;  
      import org.springframework.core.io.Resource;  
        
      import java.util.Map;  
      import java.util.Properties;  
        
      public class CustomEnvironmentPostProcessor implements EnvironmentPostProcessor {  
        
          @Override  
          public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {  
              // 自定義配置文件  
              String[] profiles = {"test.properties", "test.yml"};  
        
              for (String profile : profiles) {  
                  // 從classpath路徑下面查找文件  
                  Resource resource = new ClassPathResource(profile);  
                  // 加載成PropertySource對象,并添加到Environment環境中  
                  environment.getPropertySources().addLast(loadProfiles(resource));  
              }  
          }  
        
          private PropertySource<?> loadProfiles(Resource resource) {  
              if (!resource.exists()) {  
                  throw new IllegalArgumentException("配置文件" + resource + "不存在");  
              }  
              if (resource.getFilename() == null) {  
                  throw new RuntimeException("配置文件" + resource + "不存在");  
              }  
              if (resource.getFilename().endsWith("yml")) {  
                  return loadYml(resource);  
              } else {  
                  return loadProperties(resource);  
              }  
          }  
        
          /**  
           * 加載properties格式的配置文件  
           *  
           * @param resource  
           * @return  
           */  
          private PropertySource loadProperties(Resource resource) {  
              try {  
                  // 從輸入流中加載一個Properties對象  
                  Properties properties = new Properties();  
                  properties.load(resource.getInputStream());  
        
                  for (Map.Entry<Object, Object> entry : properties.entrySet()) {  
                      if (entry.getKey() != null && entry.getKey().toString().contains("pwd")) {  
                          System.out.println("對特殊的配置進行處理");  
                      }  
                  }  
                  return new PropertiesPropertySource(resource.getFilename(), properties);  
              } catch (Exception ex) {  
                  throw new IllegalStateException("加載配置文件失敗" + resource, ex);  
              }  
          }  
        
          /**  
           * 加載yml格式的配置文件  
           *  
           * @param resource  
           * @return  
           */  
          private PropertySource loadYml(Resource resource) {  
              try {  
                  YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean();  
                  factory.setResources(resource);  
                  // 從輸入流中加載一個Properties對象  
                  Properties properties = factory.getObject();  
                  for (Map.Entry<Object, Object> entry : properties.entrySet()) {  
                      if (entry.getKey() != null && entry.getKey().toString().contains("pwd")) {  
                          System.out.println("對特殊的配置進行處理");  
                      }  
                  }  
        
                  return new PropertiesPropertySource(resource.getFilename(), properties);  
              } catch (Exception ex) {  
                  throw new IllegalStateException("加載配置文件失敗:" + resource, ex);  
              }  
          }  
      }
      

      第二步

      配置spring.factories文件,在resources目錄下創建META-INF目錄,然后在目錄里創建spring.factories文件,文件內容:

      org.springframework.boot.env.EnvironmentPostProcessor=\  
        io.gitee.javalaoniu.cyml.processor.CustomEnvironmentPostProcessor
      

      第三步

      使用

      @Autowired  
      private Environment environment;
      
      // 下面直接獲取配置
      System.out.println(environment.getProperty("person.name"));  
      System.out.println(environment.getProperty("person.age"));  
      System.out.println(environment.getProperty("person.pwd"));  
        
      System.out.println(environment.getProperty("test.name"));  
      System.out.println(environment.getProperty("test.age"));  
      System.out.println(environment.getProperty("test.pwd"));
      

      上面栗子的地址: https://gitee.com/javalaoniu/tutorial

      posted @ 2023-03-26 00:05  Java夜未眠  閱讀(164)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产成人久久综合一区| 亚洲a∨无码无在线观看| 亚洲中文字幕人妻系列| 国产绿帽在线视频看| 另类 专区 欧美 制服| 日本免费一区二区三区| 夜夜添狠狠添高潮出水| 少妇太爽了在线观看免费视频| 在线亚洲高清揄拍自拍一品区| 亚洲无人区码二码三码区| 熟女国产精品一区二区三| 8av国产精品爽爽ⅴa在线观看| 韩国午夜理伦三级| 亚洲国产精品男人的天堂| 99在线小视频| 久久www免费人成看片中文| 亚洲精品漫画一二三区| 国产av一区二区午夜福利| 中文字幕午夜福利片午夜福利片97| 人妻系列中文字幕精品| 好吊视频在线一区二区三区| 色九九视频| 亚洲国内精品一区二区| 国产一二三五区不在卡| 成人区人妻精品一区二区| 影音先锋在线资源无码| 日本亚洲欧洲无免费码在线| 天堂va亚洲va欧美va国产| 免费无码中文字幕A级毛片| 国产人妻人伦精品婷婷| 国产精品一区在线免费看| 2018av天堂在线视频精品观看| 色www永久免费视频| 日夜啪啪一区二区三区| 免费无码肉片在线观看| 美日韩av一区二区三区| 日韩精品亚洲精品第一页| 亚洲熟妇色自偷自拍另类| 亚洲尤码不卡av麻豆| 国产中文字幕精品视频| 亚洲欧美精品一中文字幕|