1.上下文扩展 ApplicationContextAware
Map<String, XXXXTask> ywwlTaskMap = applicationContext.getBeansOfType( XXXXTask.class); xxxxTaskMap.forEach((x, y) -> { XXXXTaskName ywwlTaskName = y.getClass().getAnnotation( XXXXTaskName.class); //判断是否实现了ywwltaskname注释 if (ywwlTaskName!= null) { String taskName = ywwlTaskName.taskName(); }; } });
2. init与destroy方法:InitializingBean(init) DisposableBean(销毁)
3.实例加载完毕扩展:SmartInitializingSingleton
4.方法上下文:MethodIntrospector
Map<Method, XxlJob> annotatedMethods = null; // referred to :org.springframework.context.event.EventListenerMethodProcessor.processBean try { annotatedMethods = MethodIntrospector.selectMethods(bean.getClass(), new MethodIntrospector.MetadataLookup<XxlJob>() { @Override public XxlJob inspect(Method method) { return AnnotatedElementUtils.findMergedAnnotation(method, XxlJob.class); } }); } catch (Throwable ex) { logger.error("xxl-job method-jobhandler resolve error for bean[" + beanDefinitionName + "].", ex); }