code: public <T> T get(ConfigKey key, T def) {
          Object o = data.get(key);
          if (null == o) {
              o = key.val(raw);
              if (null == o) {
                  o = null == def ? NULL : def;
              }
              data.put(key, o);
          }
          if (isDebugEnabled()) {
              debug("config[%s] loaded: %s", key, o);
          }
          if (o == NULL) {
              return null;
          } else {
              return (T) o;
          }
      }
docs: Return configuration by {@link AppConfigKey configuration key}
  
  @param key
  @param <T>
  @return the configured item