I think it is good to have a default.conf
config as fallback along with your application.conf
which is specific to deployment enviroments/machines.
Your reference.conf
should have all the library (akka or any other library) defaults.
Then your default.conf
should have the application defaults (including defaults needed for business usecases if any). Your application.conf
should override only needed properties from default.conf
and reference.conf
.
Also I believe that your default.conf
should not override any reference.conf
properties. Any overriding should be done in application.conf
only. This helps make sure that you have only 1 place of overrides and you don't have to go through multiple places to see which conf overrides what.
Finally and most importantly:
Maintain consistency across apps/services/teams
In case you have multiple apps then make sure that you follow the decided process for all of them. It won't matter too much if you choose a bad way of using configs, but if you are in-consistent across your apps/services then its going to be a pain.