在Spring mvc的开辟中,我们可以经由过程RequestMapping来配,当前办法用于处理哪一个URL的请求.同样我们如今有一个需求,有一个义务调剂器,可以按照不合的义务类型路由到不合的义务履行器。其本质就是经由过程外部参数进行一次路由和Spring mvc做的工作类似。简单看了Spring mvc的实现道理之后,决定应用自定义注解的方法来实现以上功能。
自定义TaskHandler注解
- @Target({ElementType.TYPE})
- @Retention(RetentionPolicy.RUNTIME)
- @Documented
- @Component
- public @interface TaskHandler {
- String taskType() default "";
- }
以上定义了义务处理器的注解,个中@Component表示在spring 启动过程中,会扫描到并且注入到容器中。taskType表示类型。
义务处理器定义
义务处理器实现
- public abstract class AbstractTaskHandler {
- /**
- * 义务履行器
- *
- * @param task 义务
- * @return 履行结不雅
- */
- public abstract BaseResult execute(Task task);
- }
以上定义了一个义务履行的处理器,其他所有的具体的义务履行器持续实现这个办法。个中Task表示义务的定义,包含义务Id,履行义务须要的参数等。

接下来,我们可以实现一个具体的义务处理器。
- @TaskHandler(taskType = "UserNameChanged")
- public class UserNameChangedSender extends AbstractTaskHandler {
- @Override
- public BaseResult execute(Task task) {
- return new BaseResult();
- }
- }
以上我们就实现一个用户名修改通知的义务处理器,具体的营业逻辑这琅绫腔有实现。
个中:@TaskHandler(taskType = "UserNameChanged"),这里我们指定则个Handler用于处理用户名变革的义务
义务处理Handler注册
- public class TaskHandlerRegister extends ApplicationObjectSupport {
- private final static Map<String, AbstractTaskHandler> TASK_HANDLERS_MAP = new HashMap<>();
- private static final Logger LOGGER = LoggerFactory.getLogger(TaskHandlerRegister.class);
- @Override
- protected void initApplicationContext(ApplicationContext context) throws BeansException {
- super.initApplicationContext(context);
- Map<String, Object> taskBeanMap = context.getBeansWithAnnotation(TaskHandler.class);
推荐阅读
如今,人们的临盆生活早已经离不开互联网,它在带来便利的同时也激发大年夜量的新型涉网胶葛。特别是,因为互联网自身固有的跨地区、去中间化、在线化特点,新型涉网胶葛对现行司法理论、>>>详细阅读
本文标题:使用Spring自定义注解实现任务路由
地址:http://www.17bianji.com/lsqh/36542.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示