azure-spring-boot/src/main/java/com/microsoft/azure/keyvault/spring/KeyVaultOperation.java
public String get(final String property) {
        Assert.hasText(property, "property should contain text.");
        final String secretName = getKeyvaultSecretName(property);

        // refresh periodically
        if (System.currentTimeMillis() - this.lastUpdateTime.get() > this.cacheRefreshIntervalInMs) {
            synchronized (this.refreshLock) {
                if (System.currentTimeMillis() - this.lastUpdateTime.get() > this.cacheRefreshIntervalInMs) {
                    this.lastUpdateTime.set(System.currentTimeMillis());
                    fillSecretsHashMap();
                }
            }
        }

        if (this.propertyNamesHashMap.containsKey(secretName)) {
            final SecretBundle secretBundle = this.keyVaultClient.getSecret(this.vaultUri, secretName);
            return secretBundle.value();
        } else {
            return null;
        }
    }
public String get(final String property) {
        Assert.hasText(property, "property should contain text.");
        final String secretName = getKeyvaultSecretName(property);

        // refresh periodically
        if (System.currentTimeMillis() - this.lastUpdateTime.get() > this.cacheRefreshIntervalInMs) {
            synchronized (this.refreshLock) {
                if (System.currentTimeMillis() - this.lastUpdateTime.get() > this.cacheRefreshIntervalInMs) {
                    this.lastUpdateTime.set(System.currentTimeMillis());
                    fillSecretsHashMap();
                }
            }
        }

        if (this.propertyNamesHashMap.containsKey(secretName)) {
            final SecretBundle secretBundle = this.keyVaultClient.getSecret(this.vaultUri, secretName);
            return secretBundle.value();
        } else {
            return null;
        }
    }
For convention we need to support all relaxed binding format from spring, these may include:
<table>
<tr><td>Spring relaxed binding names</td></tr>
<tr><td>acme.my-project.person.first-name</td></tr>
<tr><td>acme.myProject.person.firstName</td></tr>
<tr><td>acme.my_project.person.first_name</td></tr>
<tr><td>ACME_MYPROJECT_PERSON_FIRSTNAME</td></tr>
</table>
But azure keyvault only allows ^[0-9a-zA-Z-]+$ and case insensitive, so there must be some conversion
between spring names and azure keyvault names.
For example, the 4 properties stated above should be convert to acme-myproject-person-firstname in keyvault.

@param property of secret instance.
@return the value of secret with given name or null.