constructor-arg can be in any order
#2 How to implement factory bean:
implement FactoryBean interface and the getObject() method (Auto-Detected by Spring Framework)
#3 @PostConstruct and @PreDestory
can be used to add behavior at startup after spring finishing initiating the bean object
before bean object being destored.
The alternative in the xml configuration are init-method and destory-method
#1 Separate 'application" beans from "infrastructure" beans as infrastructure of changes between environments.