User preferences in Java EE application
One approach we use is:
- all non-mandatory properties have defaults in code
- deliver a properties file with the web application in which we define the technical oriented properties
- query a SQL table on application startup to load mainly functional oriented properties
The properties from the database have a higher priority than those from the included property file. If your requirement is to prevent functional managers from changing techical properties you can add a context column to the properties table which is checked in the management UI.
All the application code gets to see is one globally used properties collection.