Annotation Interface EachProperty


This annotation allows driving the production of Bean definitions from either configuration or the presence of another bean definition

For example:


  @EachProperty("foo.bar")
   public class ExampleConfiguration {
   }
 

In the above example a new ExampleConfiguration bean will be created for each item under the foo.bar key in application configuration

A reference to the configuration entry name can be obtained with the Parameter annotation applied to a constructor argument:


  @EachProperty("foo.bar")
   public class ExampleConfiguration {
      ExampleConfiguration(@Parameter String name) {
          ...
      }
   }
 

In the above example for a configuration property of foo.bar.test, the value of the name argument will be "test"

The bean is created as a singleton with a Named qualifier matching the configuration entry name, thus allowing retrieval with:


  ExampleConfiguration exampleConfiguration = applicationContext.getBean(ExampleConfiguration.class, Qualifiers.byName("test"));
 

Or alternatively dependency injection via the Named qualifier.

This annotation is typically used in conjunction with EachBean. For example, one can drive the configuration of other beans with the EachBean annotation:


  @EachBean(ExampleConfiguration)
  @Singleton
   public class ExampleBean {
      ExampleBean(ExampleConfiguration config) {
          ...
      }
   }
 
Since:
1.0
Author:
Graeme Rocher
See Also: