Using ConfigurationProperties annotation on Bean Method
Interview Questions practice on Codemia
Over 8,000 real interview questions from top companies, searchable by company and role.
@ConfigurationProperties: Using It on @Bean Methods
In the world of Spring Framework, dependency injection and configuration are fundamental cornerstones upon which applications are built. The `@ConfigurationProperties` annotation plays a pivotal role in externalizing configuration and binding properties from external sources such as `.properties` or `.yaml` files to Java objects. Let's delve deeper into using the `@ConfigurationProperties` annotation on `@Bean` methods and investigate its practicality, technical nuances, and benefits.
What is `@ConfigurationProperties`?
The `@ConfigurationProperties` annotation is designed to facilitate external configuration in Spring applications. It allows developers to map a set of properties into a structured Java object, typically simplifying configuration management by grouping related properties. This structured object configuration can then be used throughout the application.
Using `@ConfigurationProperties` on `@Bean` Methods
Developers can apply the `@ConfigurationProperties` annotation directly to `@Bean` methods within a `@Configuration` class. This capability enables partial or incremental use of configuration properties by tying specific beans directly to certain properties.
Example
Imagine a scenario where you want to configure a data source bean. Here's how you might use `@ConfigurationProperties` to facilitate this:
- Prefix: The `prefix` attribute within `@ConfigurationProperties` signifies the namespace under which the properties exist. In our example, if the prefix is "app.datasource", the application is expected to have properties like `app.datasource.url`, `app.datasource.username`, etc.
- Binding: Spring Boot’s `Binder` binds the properties under the specified prefix to the fields of the bean. The provided `DataSourceBuilder` implicitly captures and binds values to the data source properties.
- Properties File or YAML:
- The primary advantage is separating configuration logic from application logic. It allows a clean segregation where configuration can evolve independently.
- Mapping properties onto beans maximizes configuration flexibility. It leverages Spring’s robust type conversion mechanisms to manage complex configuration needs.
- With configuration externalized, testing becomes more accessible as alternate configurations can be plugged in without altering the Java code.
- By associating properties directly with beans, changes related to configuration are confined to the properties file, simplifying management and updates.
Related reading
- Using ConfigurationProperties to fill Map in generic way
- Using env variable in Spring Boot's application.properties
- Using env variable in Spring Boot's application.properties
- Using Gradle to find dependency tree
- Using InheritableThreadLocal with ThreadPoolExecutor -- or -- a ThreadPoolExecutor that doesn't reuse threads
- Using Java 8's Optional with StreamflatMap
- Using Java with Nvidia GPUs CUDA
- Using lombok with gradle and spring-boot

OOD Fundamentals
Master object-oriented design from first principles, SOLID, design patterns, and classic interview problems with hands-on coding.
View the courseTrack what you have practised
A free account saves your progress, solutions and study plan across every problem on Codemia.
Interview Questions practice on Codemia
Over 8,000 real interview questions from top companies, searchable by company and role.