Skip to content

Provides Spring config and ServerConfig necessary to support configuration

Notifications You must be signed in to change notification settings

uoa-group-applications/common-configuration

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 

Repository files navigation

commons-configuration

This provides a Spring scanned configuration file to support the @ConfigKey annotation from Sticky Code that injects System properties into your Spring objects.

e.g.

@UniversityComponent
class MyClass {
  @ConfigKey("person.name") String name
  @ConfigKey("person.age") Integer age
  @ConfigKey Boolean alive   // myclass.alive
  @ConfigKey List<String> aliases // myclass.aliases
  @ConfigKey Map<String, Integer> childrenAges  // myclass.childrenAges
}

in system properties you would have

person.name=fred
person.age=35
myClass.alive=true
myClass.aliases=The Hammer, Sooty, Sweep
myClass.childrenAges=Barbara:7, William:2

You can include in your class a @PostConfigured annotation to then do post processing on the configuration.

@UniversityComponent
class AlsoMyClass {
   @ConfigKey String parts = "gibberish"
   @ConfigKey String password


   @PostConfigured
   public void configure() {
     // do something here
   }
}

Configuration Sources

There are two - the Jar Manifest file is first, the System Properties are second. Jar Manifest's can't use keys with a "." in their name, so those are immediately skipped.

Alternatives

We can use the @Value annotation from Spring, but this has a number of "issues":

  • @Value annotated fields in base classes will not pull their configuration settings when the bean is configured
  • @Value requires you to specify where your properties are coming from, which generally is undesirable as the source of configuration is extensible.
  • @Value's default mechanism is clumsy, requiring error prone stringization of defaults

Web Usage

The artifact includes a web fragment, if included in a Servlet 3.x container, it will automatically be added to the global web.xml

Other Spring usage

Anyone using the Artifact outside of a web container will need to get the StickyBootstrap object and call "start" on it (see the StickyBootStrapServlet for an example).

Notes

  • if you don't give a default value and the user doesnt provide a value, the initialization of your application will immediately fail (FAST FAIL)

Applications using: pretty much everything

About

Provides Spring config and ServerConfig necessary to support configuration

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages