/** Instantiates the given bean, simulating the standard bean life cycle. */
private <T> T instantiateBean(Class<T> clazz, ApplicationContext applicationContext) {
T strategy = BeanUtils.instantiateClass(clazz);
if (strategy instanceof BeanNameAware) {
BeanNameAware beanNameAware = (BeanNameAware) strategy;
beanNameAware.setBeanName(clazz.getName());
}
if (applicationContext != null) {
if (strategy instanceof BeanClassLoaderAware) {
((BeanClassLoaderAware) strategy).setBeanClassLoader(applicationContext.getClassLoader());
}