I was first introduced to IOC (inversion of control) programming when I joined m-Qube (then Proteus Mobile) back in May 2002. Of course, at that time I didn't know what IOC was, or dependency injection, etc. The JBoss JMX Microkernel provided a very simple way to write MBean services and deploy them without having to write XML files. In addition, there is a notion of service lifecycle.
By creating a few classes and creating an .xml file, then copying classes and .xml file to the server, you can adapt and deploy your services in about an hour. These services can easily be introspected, stopped, started, modified, etc. and service dependencies are correctly handled.
What does Spring provide? Well, there are ways to deploy MBeans easily and hooks for your beans to implement to add lifecycle operations. However, there is no standard way to expose these lifecycle methods and no service controller equivalent. Services seem to only be undeployed when the application context is destroyed, which includes the entire application. There is no JBoss ServiceController equivalent which allows fine-grained control over bean lifecycle when the beans are already deployed.
It sure would be nice if Spring would be as easy as this 5+ year old system.
The new JBoss Microcontainer doesn't really have the same base classes such as ServiceMBeanSupport. I'm looking at how this might work. It may be complicated enough that I simply work with the SARDeployer instead.