Spring Boot 自定义 starter


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

本文以JDBC配置为例;

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

二. 引入依赖

  maven依赖

<?xml version="1.0" encoding="UTF-8"?>


  4.0.0

  com.feng
  jdbc-spring-boot-starter
  1.0-SNAPSHOT

  jdbc-spring-boot-starter


  
    
      org.springframework.boot
      spring-boot-autoconfigure
      2.1.6.RELEASE
      compile
    
    
    
      org.springframework.boot
      spring-boot-configuration-processor
      2.1.6.RELEASE
      true
    
    
      org.springframework.boot
      spring-boot-starter-logging
      2.1.6.RELEASE
    
    
    
      com.alibaba
      druid
      1.1.10
    
    
    
      org.projectlombok
      lombok
      1.18.20
      provided
    

  
  
    
      
        org.springframework.boot
        spring-boot-maven-plugin
      
      
        org.apache.maven.plugins
        maven-compiler-plugin
        
          1.8
          1.8
          UTF-8
        
      
    
  

 三. 在项目中新建配置类

  配置文件 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中引用


    com.feng
    jdbc-spring-boot-starter
    1.0-SNAPSHOT