Spring Configuration Beans

Spring configuration

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.0.RELEASE</version>
    <relativePath/>
    <!-- lookup parent from repository -->
</parent>

 

The following example is the sample class

@Configuration
@PropertySource("classpath:application.properties")
@ConfigurationProperties(prefix = "file")
public class FileStorageProperties {
   private String authMethod;
}

@PropertySource

The application.property which resides in the classpath will be read to identify the configuration properties for the above property.

@Configuration

This property will be identified as an autowire candidate.

@ConfigurationProperties

This will remark the configuration property and prefix will identify the appropriate properties for the class.

 

Following any form will assign the above authMethod variable.

file.auth_method
file.auth-method
file_AUTH_METHOD
file_AUTH_METHOD

 

Now let’s say we have a hierarchy of properties as follows.

#Object properties
mail.credentials.username=nuran
mail.credentials.password=password
mail.credentials.authMethod=SHA1
The following configuration class can be organized as follows to retrieve the above configurations.
public class ConfigProperties {


    public static class Credentials {
        private String authMethod;
        private String username;
        private String password;


       // standard getters and setters

    }

    private String host;

 

The following type of configuration will map the properties into the list and map.

#List properties
mail.defaultRecipients[0]=admin@mail.com
mail.defaultRecipients[1]=owner@mail.com

#Map Properties
mail.additionalHeaders.redelivery=true
mail.additionalHeaders.secure=true

 

We can also use validation properties to ensure the properties meets the requirement.

The following are some samples for validation properties.

String empty check

@NotBlank
private String host;

String length check

@Length(max = 4, min = 1)
private String authMethod;

Min-max value check for the integer

 

@Min(1025)
@Max(65536)
private int port;