JAVA自動路由

2021-08-17 03:52:10 字數 4035 閱讀 7936

自定義taskhandler註解

?

1

2

3

4

5

6

7

8

@target()

@retention(retentionpolicy.runtime)

@documented

@component

public@inte***cetaskhandler

以上定義了任務處理器的註解,其中@component表示在spring 啟動過程中,會掃瞄到並且注入到容器中。tasktype表示型別。

任務處理器定義

?

1

2

3

4

5

6

7

8

9

10

publicabstractclassabstracttaskhandler

以上定義了乙個任務執行的處理器,其他所有的具體的任務執行器繼承實現這個方法。其中task表示任務的定義,包括任務id,執行任務需要的引數等。

任務處理器實現

接下來,我們可以實現乙個具體的任務處理器。

?

1

2

3

4

5

6

7

@taskhandler(tasktype ="usernamechanged")

publicclassusernamechangedsenderextendsabstracttaskhandler

}

以上我們就實現乙個使用者名稱修改通知的任務處理器,具體的業務邏輯這裡沒有實現。

其中:@taskhandler(tasktype = "usernamechanged"),這裡我們指定這個handler用於處理使用者名稱變更的任務

任務處理handler註冊

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

publicclasstaskhandlerregisterextends

privatefinalstaticmaptask_handlers_map =newhashmap<>();

privatestaticfinallogger logger = logge***ctory.getlogger(taskhandlerregister.class);

@override

protectedvoidthrowsbean***ception

task_handlers_map.put(taskhandler.tasktype(), (abstracttaskhandler) taskbeanmap.get(beanname));

logger.info("task handler register. tasktype={},beanname={}", taskhandler.tasktype(), beanname);

}

});

}

publicstaticabstracttaskhandler gettaskhandler(string tasktype)

}

spring完成bean的初始化

查詢spring的容器中,所有帶有taskhandler註解的bean

校驗bean是否為abstracttaskhandler型別,獲取到tasktype

把該bean放到task_handlers_map容器中,即註冊完成

任務執行

接下來我們來看下任務執行

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

publicclasstaskexecutorimplementsjob

abstracttaskhandler abstracthandler = taskhandlerregister.gettaskhandler(tasktype);

returnabstracthandler.execute(task);

}

}

這裡發起任務執行的是乙個job,具體過程如下

校驗該任務型別,有沒有在註冊中心註冊相關handler

從任務註冊中心獲取到對應的處理的handelr

執行該handelr

vue自動配置路由

vue專案開發過程中頁面太多,路由配置起來也是一件很麻煩的事,好在webpack提供了乙個require.context介面,通過執行require.context函式可以獲取乙個特定的上下文,實現自動化匯入模組。一 語法 require.context dir true,js 第乙個引數表示相對的...

自動化路由

通過動態引入js來實現自動化路由 require.context true,js 使用webpack的乙個方法,require.context 第乙個引數是需要檢索的資料夾 第二個引數是是否遍歷其中的子資料夾 第三個是正則 對於路由來說,路由其實就是乙個陣列,只要是組成陣列格式放入vue例項,應該就...

vue路由自動註冊

記錄一下vue路由自動註冊的一種方式 根據src views資料夾的路徑自動註冊路由,檔案結構如下 src view page1 頁面一 components 頁面一的元件 index.vue 頁面一的入口元件 page2 頁面2 components 頁面2的元件 index.vue 頁面2的入口...