Spring Boot 自定义 starter

在项目开发的过程中,难免需要自己引入一些其他项目的starter, 或是自己定义的starter, 本文是创建自定义的starter的一些步骤.

本文以JDBC配置为例;

一. 首先创建一个maven过程:

  

 

 

 

二. 引入依赖

  maven依赖

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.feng</groupId>
  <artifactId>jdbc-spring-boot-starter</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>jdbc-spring-boot-starter</name>


  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-autoconfigure</artifactId>
      <version>2.1.6.RELEASE</version>
      <scope>compile</scope>
    </dependency>
    <!--spring 配置时 处理的依赖-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-configuration-processor</artifactId>
      <version>2.1.6.RELEASE</version>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-logging</artifactId>
      <version>2.1.6.RELEASE</version>
    </dependency>
    <!--alibaba 数据源-->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.1.10</version>
    </dependency>
    <!--lombok-->
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.20</version>
      <scope>provided</scope>
    </dependency>

  </dependencies>
  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
          <encoding>UTF-8</encoding>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

 三. 在项目中新建配置类

  

  配置文件 application.yml

server:
  port: 8080

jdbc:
  driver-class-name: com.mnysql.cj.jdbc.Driver
  url: jdbc:mysql://localhost:3306/bank?characterEncoding=utf-8&serverTimezone=UTC
  username: root
  password: 123

  

JdbcProperties.java
package com.feng.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;

/**
 * Jdbc配置类
 */
@ConfigurationProperties(prefix = "jdbc")
public class JdbcProperties {

    private String driverClassName;
    private String url;
    private String username;
    private String password;

    public JdbcProperties() {
    }

    public String getDriverClassName() {
        return driverClassName;
    }

    public void setDriverClassName(String driverClassName) {
        this.driverClassName = driverClassName;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

  

JdbcConfig.java
package com.feng.config;

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;

@Configuration
@ConditionalOnClass(DataSource.class) //包含DataSource这样的类才生效
@EnableConfigurationProperties(JdbcProperties.class)
public class JdbcConfig {

    @Bean
    public DataSource dataSource(JdbcProperties prop){
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(prop.getDriverClassName());
        dataSource.setUrl(prop.getUrl());
        dataSource.setUsername(prop.getUsername());
        dataSource.setPassword(prop.getPassword());
        return dataSource;
    }
}

  还需要在resources 文件目录下新建META-INF目录,新建文件 spring.factories, 配置如下:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.feng.config.JdbcConfig

  

四. 打包操作

  执行命令: mvn clean install 

    打包成功后,在本地maven仓库里面,找到对应的jar

  

 

 

 五. 上面的jar,可以根据本地仓库中的路径,直接在pom.xml中引用

<dependency>
    <groupId>com.feng</groupId>
    <artifactId>jdbc-spring-boot-starter</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

  

 

posted @ 2022-01-08 19:28  IT6889  阅读(34)  评论(0编辑  收藏  举报