当前位置: 首页 > news >正文

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
      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代码用来封装阿里云对象信息
    @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启动时自动加载该文件必须配置)--两级目录下创建一个文件文件名为

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

相关文章:

  • 用前端框架Bootstrap的AdminLTE模板和Django实现后台首页的页面
  • Java判断是否有特殊字符串
  • PC应用管理工具 连接流程图 支持所有android手机或设备 批量设备批量应用安装卸载等管理 OS升级 push文件夹等
  • 分体式离子风刀和整体式离子风刀分别有哪些优缺点
  • Linux虚拟网络设备之tun/tap和veth设备的特点
  • java对象的创建过程
  • AI开源 - LangChain UI 之 Flowise
  • 贪心算法学习------优势洗牌
  • 请一个折腾了5个月AI绘画的人来讲讲GPU选择的经验,没入坑的看他这一篇就足够了
  • 婚姻管理系统-使用bbst数据结构
  • Python中文件copy模块shutil
  • JumpServer开源堡垒机与万里安全数据库完成兼容性认证
  • CentOS 搭建 Hadoop3 高可用集群
  • 消息认证码--数字签名--证书
  • GaussDB数据库管理系统介绍
  • SuperMap iServer 11i(2023)安全性提升汇总
  • 【leetCode算法-05】 最长回文子串 问题
  • centos7安装oxidized备份软件
  • opencv c++ canny 实现 以及与halcon canny的对比
  • Azure机器学习 - 使用与Azure集成的Visual Studio Code实战教程
  • 马上评|纠偏“左行右立”,并排站不必有道德压力
  • 新型基因编辑工具可精准嵌入完整基因
  • 迪拜工业城2025年初表现强劲,有望迎来投资增长新高
  • 澎湃读报丨多家央媒刊文关注拧紧纪律的螺丝:强化监督推动过紧日子要求落到实处
  • 苏丹港持续遭无人机袭击,外交部:呼吁各方保护民用设施和平民安全
  • 消费维权周报丨上周涉汽车类投诉较多,涉加油“跳枪”等问题