code: public Properties buildConsolidatedProperties() throws IOException {
          //Cannot use the spring classes here because they a) use the logger early, which
          //scuppers log4j and b) they're designed to do bean value overriding - not to be
          //used directly in this fashion
          Properties properties = new Properties();
  
          //Read them from the list of resources then mix in System
          for (Resource r : constructResourceList()) {
              try (InputStream is = r.getInputStream()) {
                  properties.load(is);
              }
          }
          //System
          for (String propertyName : System.getProperties().stringPropertyNames()) {
              properties.setProperty(propertyName, System.getProperty(propertyName));
          }
          return properties;
      }
docs: This will realise the set of resources returned from @see constructResourcesList and
  as a fully populated properties object, including System properties
  @return returns a fully populated Properties object with values from the config, the override and the System (in that order of precedence)
  @throws IOException