@Target({ TYPE })
@Retention(RetentionPolicy.RUNTIME)
public @interface ByPlugin {
public String type();
public String bype();
}
private void initPlugin(Class<?> pluginClass, String beanName) {
BizPlugin plugin = pluginClass.getAnnotation(BizPlugin.class);
String bype= plugin.bype();
String type= plugin.type();
String[] bypeArray = bype.split(",");
for (String biz : bypeArray) {
String beanInstance = moduleTemplatePlugins.get(biz + "$$" + type);
if (StringUtil.isBlank(beanInstance)) {
moduleTemplatePlugins.put(biz + "$$" + type, beanName);
}
}
}
@Override
public void afterPropertiesSet() throws Exception {
String[] beans = applicationContext.getBeanDefinitionNames();
for (String beanName : beans) {
if (beanName.equals("baseDAO")) {
continue;
}
try {
Object obj = applicationContext.getBean(beanName);
Class<?> clazz = obj.getClass();
if (clazz.getName().contains("EnhancerByCGLIB")) {
Class<?> tmpClazz = clazz.getSuperclass();
if (tmpClazz.isAnnotationPresent(ByPlugin .class)) {
initPlugin(tmpClazz, beanName);
}
continue;
}
if (clazz.isAnnotationPresent(BizPlugin.class)) {
initPlugin(clazz, beanName);
}
} catch (Exception e) {
TODO
}
}
}