@Override public void postInitBean(AppContext context, BeanFactory factory, BeanDefinitionConfigurator c) throws Throwable { if(c.definition().isExportMBean() || Classes.isAnnotationPresent(c.definition().getBeanClass(), Managed.class)){ c.setLazyInit(false); } }
@Override public void postCreateBean(AppContext context, BeanFactory factory, BeanDefinition def, Object bean) throws Throwable { boolean exportMBean = def.isExportMBean(); Managed a = bean.getClass().getAnnotation(Managed.class); if(null != a) { exportMBean = true; } if(exportMBean) { String name = def.getMBeanName(); if(Strings.isEmpty(name)){ name = null == a ? null : a.name(); } if(Strings.isEmpty(name)) { if(!Strings.isEmpty(def.getId())) { name = def.getId(); }else if(!Strings.isEmpty(def.getName())){ name = def.getType().getName() + "#" + def.getName(); }else if(def.isPrimary()) { name = def.getType().getName(); }else { name = def.getType().getName() + "-[mbean-" + String.valueOf(counter++) + "]"; } } log.info("Export mbean '{}' of {}", name, def); exporter.export(name, bean); } }