侧边栏壁纸
  • 累计撰写 49 篇文章
  • 累计创建 23 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

实现一个超级简单的SpringBoot Starter示例

阿砖
2024-06-14 / 0 评论 / 0 点赞 / 155 阅读 / 6778 字

在快速发展的Java技术栈中,SpringBoot 因其简便性和高效性而广受欢迎。SpringBoot 通过其特有的 Starter 机制,极大地简化了项目的依赖管理和配置。SpringBoot Starter本质上是一系列预先定义好的依赖和配置集合,它们能够让你的应用程序快速集成特定的功能。在本教程中,我们将创建一个基础的 Starter,它将提供一个启动展示日志功能,允许其他应用程序轻松地集成和使用这一功能。

思路

一般创建一个 starter 首先会有几个步骤。

  1. 创建一个 springboot 项目,删除启动类。

  2. 在项目的 resources/META-INF 目录中创建 spring.factories 文件

  3. 创建一个 AutoConfiguration 类

  4. 在项目中引入此 starter maven

创建 starter 项目

最终完成目录展示

使用 IDEA 的创建 springboot 项目功能创建或者使用 https://start.spring.io/ 创建一个什么 Dependencies 都不选的项目

  • 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.runbrick</groupId>
    <artifactId>runbrick-demo-boot-starter</artifactId>
    <version>1.0.0</version>

    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.6.13</spring-boot.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot.version}</version>
                <configuration>
                    <mainClass>com.runbrick.demo.RunbrickDemoBootStarterApplication</mainClass>
                    <skip>true</skip>
                </configuration>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

创建自动配置类。

package com.runbrick.demo.autoconfigure;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MyAutoConfiguration {
    private static final Logger logger = LoggerFactory.getLogger(MyAutoConfiguration.class);

    @Bean
    public void logInfoBean() {
        // 此处只为演示最简单的实例,启动的时候可以直接看到日志
        logger.info("logInfoBean bean start to create.");
    }
}

在 src/main/resources 下创建 META-INF 目录,并在该目录下创建 spring.factories, 将下面内容写入文件

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.runbrick.demo.autoconfigure.MyAutoConfiguration

然后 Maven install 就可以将此 starter 项目放入本地的maven 库中。在你的项目中放入 maven 坐标即可。

<dependency>
    <groupId>com.runbrick</groupId>
    <artifactId>runbrick-demo-boot-starter</artifactId>
    <version>1.0.0</version>
</dependency>

启动项目即可看见在 starter 项目中打印的日志信息

0

评论区