(初级)java中自定义一个简单的starter(组件)的创建步骤,以阿里云oss为例

第一步:创建两个模块


            第一个:aliyun-ossspring-boot-startery 用于依赖管理
            第二个:aliyun-oss-spring-boot-autoconfigure  自动配置功能 --->创建项目时勾选sqringWeb

将没用的文件删除:让模块看起来简洁(下图)

                
    

第二步:将autoconfigure模块的坐标添加到startery模块的pom文件中
 

 <dependency>
            <groupId>com.aliyun.oss.spring.boot-autoconfigure</groupId>
            <artifactId>aliyun-oss-spring-boot-autoconfigure</artifactId>
            <version>0.0.1-SNAPSHOT</version>
 </dependency>

第三步:在autoconfigure模块中的pom文件中,添加阿里云OSS依赖 

<!--下载SDK 阿里云-->
        <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-starter-web</artifactId>
        </dependency>

第四步:删除autoconfigure模块中的启动类,创建三个类。
              1.工具类:用来上传图片到阿里云,返回路经 
              2.实体类:用来封装连接阿里云的配置,将其引入到工具类实现get\set方法 

@ConfigurationProperties(prefix = "aliyun.oss") //注入配置文件信息
//当需要调用这个组件时,需要在调用者的pom文件中,配置连接阿里云的相关信息
public class AliOSSProperties {
    private String endpoint;
    private String accessKeyId;
    private String accessKeySecret;
    private String bucketName;

//省去get/set方法
}
/**
 * 阿里云 OSS 工具类
 */
public class AliOSSUtils {
    private AliOSSProperties aliOSSProperties;
    //给他提供get\set方法 在自动配置类中需要对aliOSSProperties进行赋值。
    //因为此时工具类中没有@Component注解(这个注解只能将其加入本模块的IOC容器,出了这个容器将无法获取bean对象)
    //无法直接注入工具类,只能通过自动配置类赋值
    public AliOSSProperties getAliOSSProperties() {
        return aliOSSProperties;
    }
    public void setAliOSSProperties(AliOSSProperties aliOSSProperties) {
        this.aliOSSProperties = aliOSSProperties;
    }

.........  此处只是将工具类引入的代码
}

                3.自动配置类声明第三方bean:将工具类AliOSSUtils声明为IOC容器中的bean对象(被注入的关键)

                                        1.注解@Configuration:用来告诉sqringBoot这是一个配置类

                                        2.注解@EnableConfigurationProperties()可以将类或配置文件注册到IOC容器中,至此就可以获取bean对象

//将AliOSSUtils声明为IOC容器中的bean对象
@Configuration
@EnableConfigurationProperties(AliOSSProperties.class) // 将实体类注入到IOC容器中
//自动配置类
public class AliOSSAutoConfiguration {
    @Bean  //声明第三方bean的时候需要注入哪个对象,就直接在形参中指定
    public AliOSSUtils aliOSSUtils(AliOSSProperties aliOSSProperties){
        AliOSSUtils aliOSSUtils = new AliOSSUtils();
        //这里就可以直接使用IOC容器中的实体类 ,给工具类赋值了
        aliOSSUtils.setAliOSSProperties(aliOSSProperties);
        return aliOSSUtils; //需要将那个类声明为IOC容器中的bean对象,就将它返回回去
    }
}

  第五步:autoconfigure模块下,再定义一份固定的配置文件

                1.自动配置类想要被加载,就要定义一份固定的配置文件,springBoot在启动的过程中就会加载这个配置文件

                2.这个配置文件在resources这个目录下,创建多级文件夹:META-INF/spring ,并在spring这个文件夹下创建 org.springframework.boot.autoconfigure.AutoConfiguration.imports这个文件(必须一模一样

                3.将自动配置类的全类名写入配置文件中

第六步:使用组件

        1.在需要使用的模块中,导入aliyun-oss-spring-boot-starter这一个模块的坐标即可

<dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-oss-spring-boot-starter</artifactId>
            <version>0.0.1-SNAPSHOT</version>
</dependency>

        2.需要在要使用组件的模块中的pom文件中,配置阿里云的连接信息 

          

         3.就可以注入阿里云的工具类,调用里面的方法,进行使用了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值