Change strategy from ApplicationListener to SmartLifecycle to avoid multiple registration attempts for the same beans

When running with parent/child application contexts the previous implementation was trying to re-register the same beans with JMX which led to errors.