Spring Annotations I never had the chance to use part 2: @ConfigurationProperties
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.
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | 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
1 2 3 4 | jdbc.user=myJdbcUser jdbc.password=myPwd jdbc.url=myUrl jdbc.driver=myJdbcDriver |
After that you can easily get these values by injecting the configuration class to somewhere.
1 2 3 4 5 6 7 | @Service public class YourService { @Autowired private JdbcConfig jdbcConfig; } |
You can also check here for a working toy project using “@ConfigurationProperties”.
Published on Java Code Geeks with permission by Sezin Karli, partner at our JCG program. See the original article here: spring annotations i never had the chance to use part 2: @ConfigurationProperties Opinions expressed by Java Code Geeks contributors are their own. |