作家
登录

使用Spring自定义注解实现任务路由

作者: 来源: 2017-08-04 09:36:45 阅读 我要评论

  •         taskBeanMap.keySet().forEach(beanName -> { 
  •             Object bean = taskBeanMap.get(beanName); 
  •             Class clazz = bean.getClass(); 
  •             if (bean instanceof AbstractTaskHandler && clazz.getAnnotation(TaskHandler.class) != null) { 
  •                 TaskHandler taskHandler = (TaskHandler) clazz.getAnnotation(TaskHandler.class); 
  •                 String taskType = taskHandler.taskType(); 
  •                 if (TASK_HANDLERS_MAP.keySet().contains(taskType)) { 
  •                     throw new RuntimeException("TaskType has Exits. TaskType=" + taskType); 
  •                 } 
  •                 TASK_HANDLERS_MAP.put(taskHandler.taskType(), (AbstractTaskHandler) taskBeanMap.get(beanName)); 
  •                 LOGGER.info("Task Handler Register. taskType={},beanName={}", taskHandler.taskType(), beanName); 
  •             } 
  •         }); 
  •     } 
  •  
  •     public static AbstractTaskHandler getTaskHandler(String taskType) { 
  •         return TASK_HANDLERS_MAP.get(taskType); 
  •     } 
  •  
  • 这里持续了Spring的ApplicationObjectSupport类,具体的注册过程如下

    1. Spring完成bean的初始化
    2. 查找spring的容器中,所有带有TaskHandler注解的bean
    3. 校验bean是否为AbstractTaskHandler类型,获取到taskType
    4. 把该bean放到TASK_HANDLERS_MAP容器中,即注册完成

    义务履行

    接下来我们来看下义务履行

    1. public class TaskExecutor implements Job { 
    2.  
    3.     private static final String TASK_TYPE = "taskType"
    4.  
    5.     @Override 
    6.     public BaseResult execute(Task task){ 
    7.         String taskType=task.getTaskType(); 
    8.         if (TaskHandlerRegister.getTaskHandler(taskType) == null) { 
    9.             throw new RuntimeException("can't find taskHandler,taskType=" + taskType); 
    10.         } 

    11.   推荐阅读

        互联网法院:司法与互联网的“无缝对接”

      如今,人们的临盆生活早已经离不开互联网,它在带来便利的同时也激发大年夜量的新型涉网胶葛。特别是,因为互联网自身固有的跨地区、去中间化、在线化特点,新型涉网胶葛对现行司法理论、>>>详细阅读


      本文标题:使用Spring自定义注解实现任务路由

      地址:http://www.17bianji.com/lsqh/36542.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)