1. 程式人生 > 程式設計 >springboot自定義stater啟動流程

springboot自定義stater啟動流程

springboot啟動時自動載入application.properties或者application.yml,如何定義自己的配置讓springboot自動識別:

首先我們新建一個maven工程打包方式選擇jar,然後引入所需的包

<?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>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.6.RELEASE</version>
    <relativePath /> <!-- lookup parent from repository -->
  </parent>
  <groupId>com.ruobbo.xxl</groupId>
  <artifactId>ruobbo.xxl</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>
  <properties>
    <java.version>1.8</java.version>
  </properties>
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
      <version>2.1.6.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-autoconfigure</artifactId>
      <version>2.1.6.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-configuration-processor</artifactId>
      <version>2.1.6.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.8</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>com.xuxueli</groupId>
      <artifactId>xxl-job-core</artifactId>
      <version>2.0.1</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>org.junit.vintage</groupId>
          <artifactId>junit-vintage-engine</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
  </dependencies>
  <!-- 專案部署配置 (上傳到私服的配置) -->
  <distributionManagement>
    <repository>
      <id>releases</id>
      <url>http://192.168.1.99:8081/nexus/content/repositories/releases</url>
    </repository>
    <snapshotRepository>
      <id>snapshots</id>
      <url>http://192.168.1.99:8081/nexus/content/repositories/snapshots</url>
    </snapshotRepository>
  </distributionManagement>
</project>

然後是配置讀取

@ConfigurationProperties(prefix = "xxl.job.executor")
@Data
public class XxlProperties {
  private String adminAddresses;
  private String appName;
  private String ip;
  private int port;
  private String accessToken;
  private String logPath;
  private int logRetentionDays;
  private String basePackages;
  
}

將讀取到的配置注入到bean中,然後載入到spring bean容器中

@Configuration
@EnableConfigurationProperties(XxlProperties.class)
public class XxlAutoConfiguration {
  
  private Logger logger = LoggerFactory.getLogger(XxlAutoConfiguration.class);
  
  @Resource
  private XxlProperties xxlProperties;
  
  @Bean(initMethod = "start",destroyMethod = "destroy")
  public XxlJobSpringExecutor xxlJobExecutor() {
    logger.info(">>>>>>>>>>> xxl-job config init.");
    XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
    xxlJobSpringExecutor.setAdminAddresses(xxlProperties.getAdminAddresses());
    xxlJobSpringExecutor.setAppName(xxlProperties.getAppName());
    xxlJobSpringExecutor.setIp(xxlProperties.getIp());
    xxlJobSpringExecutor.setPort(xxlProperties.getPort());
    xxlJobSpringExecutor.setAccessToken(xxlProperties.getAccessToken());
    xxlJobSpringExecutor.setLogPath(xxlProperties.getLogPath());
    xxlJobSpringExecutor.setLogRetentionDays(xxlProperties.getLogRetentionDays());
    return xxlJobSpringExecutor;
  }
  
}

最後在resources目錄下新增META-INF資料夾新增spring.factories檔案,檔案內容為指定要初始化springbean的類全路徑

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\com.ruobbo.xxl.XxlAutoConfiguration

使用過程中引入包

   <dependency>
      <groupId>com.ruobbo.xxl</groupId>
      <artifactId>ruobbo.xxl</artifactId>
      <version>0.0.1-SNAPSHOT</version>
    </dependency>

然後新增配置到application.properties或者application.yml

總結

以上所述是小編給大家介紹的springboot自定義stater啟動流程,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對我們網站的支援!
如果你覺得本文對你有幫助,歡迎轉載,煩請註明出處,謝謝!