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);

        
        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.
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 .