Description
OWNER was written because the code dealing with the configuration is frequently repetitive, redundant, it’s made of static classes, singletons, long list of methods just doing conversion from a string property to a named method returning a Java primitive or a basic Java object.
OWNER solves the problem providing an interface object that - is easy to mock, easy to pass to other objects (via dependency injection); - declaratively maps the configuration without any redundancy; - can easily expand the loading logic in order to have multiple configuration files, multiple level of overriding (global configuration, user-level, defaults, etc); - doesn’t need to have an actual properties file backing the configuration, if one uses @DefaultValue. - provides a lot of features, like hot reloading, variables expansion, etc; - leaves one free to do everything one is already doing with java.util.Properties; - does support a super powerful type conversion, which includes arrays, collections, many standard Java objects, and even the possibility to plug one's own conversion logic.