Well, coming to configurations, each programmer has its own idea on how's the right way to do... As usual it depends on a whole lot of things.
I use to deal with this choice in this way: if it's something like an enviroment var, (something similar to $PATH or $SHELL), and can/must be set by the caller (another program or a startup script), it goes straight in System.Properties via -D switch.
If it's something else, then it goes straight to property file (and actually how it's loaded is not really important, there are several ways to do it, each with pros and cons, my fav is loading from classpath, but is just a matter of taste).
I try to keep in System.Properties just minimal, really important things, if it's a big configuration, better use Properties or XML or even better database tables, but again, it depends on the complexity of your application (HelloWorld with a DB is plain overkill ^^).