设为首页 加入收藏

TOP

自定义一个springboot starter(一)
2023-07-25 21:22:59 】 浏览:68
Tags:springboot starter

1.自定义starter的作用

在我们的日常开发工作中,经常会有一些独立于业务之外的配置模块,比如阿里云oss存储的时候,我们需要一个工具类进行文件上传。我们经常将其放到一个特定的包下,然后如果另一个工程需要复用这块功能的时候,需要将代码硬拷贝到另一个工程,重新集成一遍,这样会非常麻烦。如果我们将这些可独立于业务代码之外的功配置模块封装成一个个starter,复用的时候只需要在 maven pom 中引用依赖即可,让 SpringBoot 为我们完成自动装配,提高开发效率。

2.自定义starter命名规范

SpringBoot提供的 starter 以 spring-boot-starter-xxx 的方式命名的。官方建议自定义的 starter 使用 xxx-spring-boot-starter 命名规则。以区分 SpringBoot 生态提供的 starter。如:mybatis-spring-boot-starter

3.自定义starter的步骤

现在就以自定义阿里云oss工具starter为例步骤如下:

  • 新建两个maven模块

? (1)aliyun-oss-spring-boot-autoconfigure:自动配置核心代码

? (2)aliyun-oss-spring-boot-starter:管理依赖

  • 在aliyun-oss-spring-boot-autoconfigure的pom文件中引入以下依赖

    <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>com.aliyun.oss</groupId>
                <artifactId>aliyun-sdk-oss</artifactId>
                <version>3.15.1</version>
            </dependency>
            <dependency>
                <groupId>javax.xml.bind</groupId>
                <artifactId>jaxb-api</artifactId>
                <version>2.3.1</version>
            </dependency>
            <dependency>
                <groupId>javax.activation</groupId>
                <artifactId>activation</artifactId>
                <version>1.1.1</version>
            </dependency>
            <!-- no more than 2.3.3-->
            <dependency>
                <groupId>org.glassfish.jaxb</groupId>
                <artifactId>jaxb-runtime</artifactId>
                <version>2.3.3</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-configuration-processor</artifactId>
                <optional>true</optional>
            </dependency>
    </dependencies>
    
  • 在aliyun-oss-spring-boot-autoconfigure的java里面的对应的包里新建三个文件

    AliOSSProperties.java

    package com.minqiliang;
    
    
    import org.springframework.boot.context.properties.ConfigurationProperties;
    
    @ConfigurationProperties("aliyun.oss")
    public class AliOSSProperties {
        private String endpoint;
        private String accessKeyId;
        private String accessKeySecret;
        private String bucketName;
    
        /**
         * 获取
         * @return endpoint
         */
        public String getEndpoint() {
            return endpoint;
        }
    
        /**
         * 设置
         * @param endpoint
         */
        public void setEndpoint(String endpoint) {
            this.endpoint = endpoint;
        }
    
        /**
         * 获取
         * @return accessKeyId
         */
        public String getAccessKeyId() {
            return accessKeyId;
        }
    
        /**
         * 设置
         * @param accessKeyId
         */
        public void setAccessKeyId(String accessKeyId) {
            this.accessKeyId = accessKeyId;
        }
    
        /**
         * 获取
         * @return accessKeySecret
         */
        public String getAccessKeySecret() {
            return accessKeySecret;
        }
    
        /**
         * 设置
         * @param accessKeySecret
         */
        public void setAccessKeySecret(String accessKeySecret) {
            this.accessKeySecret = accessKeySecret;
        }
    
        /**
         * 获取
         * @return bucketName
         */
        public String getBucketName() {
            return bucketName;
        }
    
        /**
         * 设置
         * @param bucketName
         */
        public void setBucketName(String bucketName) {
            this.bucketName = bucketName;
        }
    }
    

    AliOSSUtils.java

    package com.minqiliang;
    
    import com.aliyun.oss.OSS;
    import com.aliyun.oss.OSSClientBuilder;
    import org.springframework.web.multipa
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Java 网络编程 —— 异步通道和异.. 下一篇Idea运行支付宝网站支付demo踩坑..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目