I am building an app that runs periodically and monitors server essentials (RAM, disk space, network connectivity).
In the hopes of making it extensible I have a checker Interface that all classes running a Check will implement.
If in the future a new check is requested (e.g check server time), any of my colleagues can write his own checker and the app will pick it up and run the check.
Currently all Checker classes that need to be run are indicated in a properties file.
Is there a better way of indicating which Checks are to be run?
Are there any major problems that I do not foresee with the current setup?
Essentially the .properties file is a config for your monitor app. There is nothing wrong with it and you can define pretty complex configuration in a .properties file – take a look at log4j.
The problem might be how would you evolve the config if you need to pass some additional parameters to the checkers or to the monitor itself.
So, you might pick more expressive config format which is easy to read and maintain. As Jigar mentioned, Spring can be used to abstract configuration from your app code (assuming you enjoy reading and maintaining xml :)).