SpringBoot----自定义Start(自定义依赖)

一,为什么要定义Start

向阿里云OSS如果我们要引入的话很麻烦,所以我们可以自定义一些组件,

然后我们只需要在pom文件中引入对应的坐标就可以

二,怎么定义(以阿里云OSS为例)

1, 定义两个组件模块

  • org.mybatisspring.boot:mybatis-spring-boot-starter
  • 这个模块中什么代码都不需要有------只需要在pom文件中定义
  1. 自定义aliyun-oos-spring-boot-starter
    1. 其他的都删除只保留
    2. 精简pom文件
  • org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure
  • 在这个包中进行自动配置功能
  1. 自定义aliyun.oss-spring-boot-autoconfigure

    1. 其他的都删除----
    2. -启动类和application配置文件也删除---测试类也删除
    3. 然后再starter中的配置文件中引入autoconfigure依赖----非常重要
    4. 在autoconfigure的pom文件中引入aliyunoss的依赖
  2. 将工具类放到com.aliyun.oss包下面

    1. 定义一个自动配置类AliOSSConfiguration

      java 复制代码
      package com.aliyun.oss;
      
      
      import org.springframework.boot.context.properties.EnableConfigurationProperties;
      import org.springframework.context.annotation.Bean;
      import org.springframework.context.annotation.Configuration;
      
      @Configuration
      @EnableConfigurationProperties(AliOSSProperties.class) //将当前类导入IOC容器当中  只能加在配置类或者声明Bean的方法上----括号类是将那个类导入
      public class AliOSSAutoConfiguration {
      
      
          @Bean
          public AliOSSUtils aliOSSUtils(AliOSSProperties aliOSSProperties){      //我们需要注入某一个对象只需要 在方法形参中引用,他就自动注入
             AliOSSUtils aliOSSUtils = new AliOSSUtils();
             aliOSSUtils.setAliOSSProperties(aliOSSProperties);
             return aliOSSUtils;
          }
      }
  3. AliOSSProperties代码用来封装阿里云对象信息

    java 复制代码
    @ConfigurationProperties(prefix = "aliyun.oss")
    public class AliOSSProperties {
    
        private String endpoint;
        private String accessKeyId;
        private String accessKeySecret;
        private String bucketName;
    
        public String getEndpoint() {
            return endpoint;
        }
    
        public void setEndpoint(String endpoint) {
            this.endpoint = endpoint;
        }
    
        public String getAccessKeyId() {
            return accessKeyId;
        }
    
        public void setAccessKeyId(String accessKeyId) {
            this.accessKeyId = accessKeyId;
        }
    
        public String getAccessKeySecret() {
            return accessKeySecret;
        }
    
        public void setAccessKeySecret(String accessKeySecret) {
            this.accessKeySecret = accessKeySecret;
        }
    
        public String getBucketName() {
            return bucketName;
        }
    
        public void setBucketName(String bucketName) {
            this.bucketName = bucketName;
        }
  4. 自定义自动配置文件(要想Spring启动时自动加载该文件必须配置)--两级目录下创建一个文件文件名为

    java 复制代码
    org.springframework.boot.autoconfigure.AutoConfiguration.imports
  5. 然后将自动配置文件的全类名复制进去

相关推荐
我命由我123451 天前
Jetpack Compose - 设置 Compose 编译器、设置 Compose 依赖项
android·java·java-ee·kotlin·android jetpack·android-studio·android runtime
l软件定制开发工作室1 天前
Spring开发系列教程(37)——使用Conditional
java·后端·spring
代码漫谈1 天前
Spring Boot日志配置全攻略:打造高效、可靠的日志系统
java·spring boot·log4j·日志
ideal-cs1 天前
总结:生产环境Release、Snapshot两种包版本该如何管理与发布构建
java·maven·snapshot·release
yangminlei1 天前
Spring Boot Starter自定义开发 构建企业级组件库
java·spring boot·后端
牛奶咖啡131 天前
CI/CD——在jenkins中构建流程实现springboot项目的自动化构建与部署
java·ci/cd·k8s·jenkins·springboot·springboot制作镜像·使用源码项目制作镜像
桔筐1 天前
Redis 无锁化库存扣减方案(INCR + SETNX 实现,高并发不超卖)
java·redis
RemainderTime1 天前
基于Spring AI + 阿里百炼 DashScope:构建 AI Agent RAG 企业级知识助手
人工智能·后端·spring·ai·es
接着奏乐接着舞1 天前
springboot 常用注解
spring boot·后端·python
AI人工智能+电脑小能手1 天前
【大白话说Java面试题 第44题】【JVM篇】第4题:什么时候会触发 Young GC?什么时候会触发 Full GC?
java·开发语言·jvm·后端·面试