code: private String getKeyName(Class targetClass, String setter, String keyPrefix) throws Exception {
  
          StringBuilder key = new StringBuilder();
          key.append(keyPrefix);
          if (!key.toString().isEmpty()) {
              key.append(".");
          }
  
          // get ConfigValue
          Field field = targetClass.getDeclaredField(setterToField(setter));
          ConfigValue fieldAnnotation = null;
          if (field != null) {
              fieldAnnotation = field.getAnnotation(ConfigValue.class);
          }
  
          if (fieldAnnotation != null && !fieldAnnotation.value().isEmpty()) {
              key.append(StringUtils.camelCaseToHyphenCase(fieldAnnotation.value()));
  
          } else {
              key.append(StringUtils.camelCaseToHyphenCase(setter.substring(3)));
          }
  
          return key.toString();
  
      }
docs: Construct key name from prefix and field name or ConfigValue value (if present)
  
  @param targetClass target class
  @param setter      name of the setter method
  @param keyPrefix   prefix used for generation of a configuration key
  @return key in format prefix.key-name