Few days ago, I accidentally stumbled upon a Spring annotation from Spring Boot project while I was checking something else.
We all know how to bind property values with "@Value" to the classes and we all know that this can be quite cumbersome if there are multiple properties to bind. Spring Boot is here to help. You can use "@ConfigurationProperties" and bind multiple values quite concisely. We will give a prefix to differentiate other configs from ours. e.g. "@ConfigurationProperties(prefix = "jdbc")".
Any field this annotated class has is populated with property values from the property resource. For instance if it has a username parameter then property resource with "jdbc.username" key will populate this field. The most practical way of using this annotation is using it with "@Configuration".
You can check how we create the config class.
We all know how to bind property values with "@Value" to the classes and we all know that this can be quite cumbersome if there are multiple properties to bind. Spring Boot is here to help. You can use "@ConfigurationProperties" and bind multiple values quite concisely. We will give a prefix to differentiate other configs from ours. e.g. "@ConfigurationProperties(prefix = "jdbc")".
Any field this annotated class has is populated with property values from the property resource. For instance if it has a username parameter then property resource with "jdbc.username" key will populate this field. The most practical way of using this annotation is using it with "@Configuration".
You can check how we create the config class.
package com.sezinkarli.tryconfigprops;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import javax.annotation.PostConstruct;
import java.util.HashMap;
import java.util.Map;
@Configuration
@ConfigurationProperties(prefix = "jdbc")
public class JdbcConfig
{
private String user;
private String password;
private String url;
private String driver;
public String getUser()
{
return user;
}
public void setUser(String user)
{
this.user = user;
}
public String getPassword()
{
return password;
}
public void setPassword(String password)
{
this.password = password;
}
public String getUrl()
{
return url;
}
public void setUrl(String url)
{
this.url = url;
}
public String getDriver()
{
return driver;
}
public void setDriver(String driver)
{
this.driver = driver;
}
public String getProperty(String key)
{
return propertyMap.get(key);
}
}
And below you can check the properties we map from application properties
jdbc.user=myJdbcUser jdbc.password=myPwd jdbc.url=myUrl jdbc.driver=myJdbcDriverAfter that you can easily get these values by injecting the configuration class to somewhere.
@Service
public class YourService
{
@Autowired
private JdbcConfig jdbcConfig;
}
You can also check here for a working toy project using "@ConfigurationProperties".