springboot自定义starter-《Springboot编程思想》

Posted Fire king

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot自定义starter-《Springboot编程思想》相关的知识,希望对你有一定的参考价值。

很多时候,我们希望将一些功能封装到一个工具类里面保证代码的可重用,这时候就会写很多很多的工具类,我们不妨把这写生成一个依赖,需要使用的时候直接引入不香吗?因此《Springboot编程思想》实现了这个操作,原书中的实践流程如下:

1.整个项目结构

2.新建一个springboot工程,空空的那种哟

如图中的springbootOraginCode

3.新建一个formatter-spring-boot-starter 模块

如图中的formatter-spring-boot-starter,这个的名字将作为依赖的artifactId

4.在formatter-spring-boot-starte建包

前面四级不变,为基本包,后面那个包就与接口名字一样,也就是artifactId的第一个词。

5.编写formatter接口

注意包名

package cloud.xlh.samples.autoconfigure.formatter;

public interface Formatter {
    String format(Object Object);
}

6.编写实现类DefaultFormatter

package cloud.xlh.samples.autoconfigure.formatter;

public class DefaultFormatter implements Formatter {
    @Override
    public String format(Object Object) {
        return String.valueOf(Object);
    }
}

7.编写自动配置类FormatterAutoConfiguration生成bean交给spring管理

package cloud.xlh.samples.autoconfigure.formatter;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class FormatterAutoConfiguration {

    @Bean
    public Formatter defaultFormatter() {
        return new DefaultFormatter();
    }
}

8.最重要的一点,新建spring.factories文件

在类路径即resource目录下建一个META-INF目录,在此基础下建一个spring.factories文件,写上

//固定
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\\
//配置类的全限定类名
cloud.xlh.samples.autoconfigure.formatter.FormatterAutoConfiguration

9.编写引导类FormatterBootstrap

package cloud.xlh.samples.autoconfigure.formatter;

import org.springframework.boot.WebApplicationType;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.context.ConfigurableApplicationContext;

import java.util.HashMap;

@EnableAutoConfiguration
public class FormatterBootstrap {
    public static void main(String[] args) {
        ConfigurableApplicationContext context = new SpringApplicationBuilder(FormatterBootstrap.class).web(WebApplicationType.NONE)
                .run(args);
        HashMap<String, Object> data = new HashMap<>();
        data.put("name","小马哥");
        Formatter formatter = context.getBean(Formatter.class);
        System.out.println( formatter.format(data));
        context.close();
    }
}

10.在工程总的pom.xml加上启动器依赖

 			 <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-autoconfigure</artifactId>
                <version>2.3.0.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>cloud.xlu</groupId>
                <artifactId>formatter-spring-boot-starter</artifactId>
                <version>0.0.1-SNAPSHOT</version>
            </dependency>
  

11.install一下formatter-spring-boot-starter

12.运行引导类即可

注意:运行后要找到8080的java.exe占用端口杀掉pid,否则运行其他端口为8080的springboot项目会爆端口占用的错误,同时,每次install才能运行引导类。

13.将自定义的启动器打包

idea右边maven侧边栏打开
成功之后

14.安装jar包到本地仓库

找到jar目录,cmd进去,如我的

编写pom.xml文件对应的参数(groupId,artifactId、version等)

mvn install:install-file

-Dfile=jar文件所在路径(这里使用绝对路径)

-DgroupId=包名

-DartifactId=项目名

-Dversion=版本号

-Dpackaging=jar

command:
D:\\IDEA\\IdeaProjects\\springbootOraginCode\\formatter-spring-boot-starter\\target>mvn install:install-file -Dfile=formatter-spring-boot-starter.jar -DgroupId=cloud.xlh -DartifactId=formatter-spring-boot-starter -Dversion=1.0.0 -Dpackaging=jar

-Dfile=formatter-spring-boot-starter.jar 中的值只要与磁盘中jar包名字对应即可,其他的参数其实可以随便,但为了符合规范就使用规范:最终引入的效果:

 <dependency>
            <groupId>cloud.xlh</groupId>
            <artifactId>formatter-spring-boot-starter</artifactId>
            <version>1.0.0</version>
        </dependency>

以上是关于springboot自定义starter-《Springboot编程思想》的主要内容,如果未能解决你的问题,请参考以下文章

springBoot学习笔记自定义starter

SpringBoot系列之自定义starter实践教程

自定义SpringBoot Starter 实现请求日志打印

自定义SpringBoot Starter 通过注解启动装配

SpringBoot——SpringBoot四大核心之起步依赖(自定义starter)

SpringBoot——SpringBoot四大核心之起步依赖(自定义starter)