日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

【SpringBoot】63、SpringBoot中教你手把手封装自己的starter(xxl-job-spring-boot-starter)

發布時間:2023/12/20 javascript 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【SpringBoot】63、SpringBoot中教你手把手封装自己的starter(xxl-job-spring-boot-starter) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、starter 命令規范

  • 1、官方提供的 starter
spring-boot-starter-{name}
  • 2、自己封裝的 starter
{name}-spring-boot-starter

2、封裝 xxl-job-spring-boot-starter

  • 1、創建項目
    本次我們封裝的是 xxl-job的starter,項目命令為 xxl-job-spring-boot-starter,目錄結構如下:
  • 2、引入 pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.asurplus</groupId><artifactId>xxl-job-spring-boot-starter</artifactId><version>2.3.0</version><name>xxl-job-spring-boot-starter</name><description>SpringBoot整合xxl-job快速開發</description><url>https://gitee.com/asurplus/xxl-job-spring-boot-starter</url><properties><spring.boot.version>2.5.3</spring.boot.version><xxl-job.version>2.3.0</xxl-job.version></properties><dependencies><!--封裝Starter核心依賴 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId><version>${spring.boot.version}</version><scope>provided</scope></dependency><!--非必需,該依賴作用是在使用IDEA編寫配置文件有代碼提示--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><version>${spring.boot.version}</version><scope>provided</scope></dependency><!-- xxl-job-core --><dependency><groupId>com.xuxueli</groupId><artifactId>xxl-job-core</artifactId><version>${xxl-job.version}</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.0</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin></plugins></build></project>

其中,configuration-processor 和 autoconfigure 是必備的,這樣才能使用 SpringBoot 的自動裝配原理,xxl-job 我們選用的版本為:2.3.0

  • 3、xxl-job 配置參數
import org.springframework.boot.context.properties.ConfigurationProperties;/*** xxl-job properties** @author Asurplus 2022-04-29*/ @ConfigurationProperties(prefix = "xxl-job") public class XxlJobProperties {private final AdminProperties admin = new AdminProperties();private final ExecutorProperties executor = new ExecutorProperties();private String accessToken = "";public String getAccessToken() {return accessToken;}public void setAccessToken(String accessToken) {this.accessToken = accessToken;}public static class AdminProperties {private String addresses = "http://127.0.0.1:8080/xxl-job-admin";public String getAddresses() {return addresses;}public void setAddresses(String adminAddresses) {this.addresses = adminAddresses;}}public static class ExecutorProperties {private String appname = "xxl-job-executor-sample";private String address;private String ip;private int port = 9999;private String logPath = "/data/applogs/xxl-job/jobhandler";private int logRetentionDays = 30;public String getAppname() {return appname;}public void setAppname(String appname) {this.appname = appname;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getIp() {return ip;}public void setIp(String ip) {this.ip = ip;}public int getPort() {return port;}public void setPort(int port) {this.port = port;}public String getLogPath() {return logPath;}public void setLogPath(String logPath) {this.logPath = logPath;}public int getLogRetentionDays() {return logRetentionDays;}public void setLogRetentionDays(int logRetentionDays) {this.logRetentionDays = logRetentionDays;}}public AdminProperties getAdmin() {return admin;}public ExecutorProperties getExecutor() {return executor;} }
  • 4、xxl-job 配置類
import com.asurplus.spring.starter.xxljob.properties.XxlJobProperties; import com.xxl.job.core.executor.impl.XxlJobSpringExecutor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;/*** xxl-job config** @author Asurplus 2022-04-29*/ @Configuration @EnableConfigurationProperties({XxlJobProperties.class}) public class XxlJobConfig {private static Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);@Bean@ConditionalOnMissingBeanpublic XxlJobSpringExecutor xxlJobSpringExecutor(XxlJobProperties xxlJobProperties) {XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();xxlJobSpringExecutor.setAdminAddresses(xxlJobProperties.getAdmin().getAddresses());xxlJobSpringExecutor.setAppname(xxlJobProperties.getExecutor().getAppname());xxlJobSpringExecutor.setAddress(xxlJobProperties.getExecutor().getAddress());xxlJobSpringExecutor.setIp(xxlJobProperties.getExecutor().getIp());xxlJobSpringExecutor.setPort(xxlJobProperties.getExecutor().getPort());xxlJobSpringExecutor.setAccessToken(xxlJobProperties.getAccessToken());xxlJobSpringExecutor.setLogPath(xxlJobProperties.getExecutor().getLogPath());xxlJobSpringExecutor.setLogRetentionDays(xxlJobProperties.getExecutor().getLogRetentionDays());logger.info(">>>>>>>>>>> xxl-job starting...");return xxlJobSpringExecutor;}}

@ConditionalOnMissingBean,它是修飾bean的一個注解,主要實現的是,當你的bean被注冊之后,如果而注冊相同類型的bean,就不會成功,它會保證你的bean只有一個,即你的實例只有一個,當你注冊多個相同的bean時,會出現異常,以此來告訴開發人員。

  • 5、spring.factories
    在 resources 目錄下,創建 META-INF 目錄,在 META-INF 目錄下創建 spring.factories 文件:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.asurplus.spring.starter.xxljob.config.XxlJobConfig

因為 SpringBoot 默認只掃描啟動內所在包下面的配置類,我們自己封裝的 starter 是沒有啟動類的,所以 SpringBoot 就提出了使用 spring.factories 來告訴自動加載需要掃描的文件路徑

  • 6、打包發布
    使用 maven 打包:
mvn clean install

在 target 目錄得到 xxl-job-spring-boot-starter-2.3.0.jar 文件

3、引入 xxl-job-spring-boot-starter

  • 1、將文件放在項目的 /resources/lib/ 目錄下
  • 2、在 pom.xml 文件中引入
<!-- xxl-job-spring-boot-starter:https://gitee.com/asurplus/xxl-job-spring-boot-starter --> <dependency><groupId>com.asurplus</groupId><artifactId>xxl-job-spring-boot-starter</artifactId><version>2.3.0</version><systemPath>${project.basedir}/src/main/resources/lib/xxl-job-spring-boot-starter-2.3.0.jar</systemPath> </dependency>
  • 3、配置信息 application.yml
# xxl-job配置信息 xxl-job:admin:# 調度中心部署跟地址 [選填]:如調度中心集群部署存在多個地址則用逗號分隔。執行器將會使用該地址進行"執行器心跳注冊""任務結果回調";為空則關閉自動注冊addresses: http://127.0.0.1:8080/xxl-job-admin# 執行器通訊TOKEN [選填]:非空時啟用accessToken:executor:# 執行器AppName [選填]:執行器心跳注冊分組依據;為空則關閉自動注冊appname: xxl-job-executor-sample# 執行器注冊 [選填]:優先使用該配置作為注冊地址,為空時使用內嵌服務 ”IP:PORT“ 作為注冊地址。從而更靈活的支持容器類型執行器動態IP和動態映射端口問題address:# 執行器IP [選填]:默認為空表示自動獲取IP,多網卡時可手動設置指定IP,該IP不會綁定Host僅作為通訊實用;地址信息用于 "執行器注冊""調度中心請求并觸發任務"ip: 127.0.0.1# 執行器端口號 [選填]:小于等于0則自動獲取;默認端口為9999,單機部署多個執行器時,注意要配置不同執行器端口port: 9999# 執行器運行日志文件存儲磁盤路徑 [選填] :需要對該路徑擁有讀寫權限;為空則使用默認路徑logpath:# 執行器日志文件保存天數 [選填] : 過期日志自動清理, 限制值大于等于3時生效; 否則,-1, 關閉自動清理功能logretentiondays: 30

至此,我們自己封裝自己的starter(xxl-job-spring-boot-starter)就完成了,快去試試吧,也可以直接下載我的項目:

https://gitee.com/asurplus/xxl-job-spring-boot-starter

關于在 SpringBoot 中如何接入 xxl-job 參考我的另一篇博文:【SpringBoot】62、SpringBoot中接入xxl-job實現分布式任務調度

https://blog.csdn.net/qq_40065776/article/details/124475340?spm=1001.2014.3001.5501

如您在閱讀中發現不足,歡迎留言!!!

總結

以上是生活随笔為你收集整理的【SpringBoot】63、SpringBoot中教你手把手封装自己的starter(xxl-job-spring-boot-starter)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。