一,为什么要定义Start
向阿里云OSS如果我们要引入的话很麻烦,所以我们可以自定义一些组件,
然后我们只需要在pom文件中引入对应的坐标就可以
二,怎么定义(以阿里云OSS为例)
1, 定义两个组件模块
- org.mybatisspring.boot:mybatis-spring-boot-starter
- 这个模块中什么代码都不需要有------只需要在pom文件中定义
- 自定义aliyun-oos-spring-boot-starter
- 其他的都删除只保留
- 精简pom文件
- org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure
- 在这个包中进行自动配置功能
自定义aliyun.oss-spring-boot-autoconfigure
- 其他的都删除----
- -启动类和application配置文件也删除---测试类也删除
- 然后再starter中的配置文件中引入autoconfigure依赖----非常重要
- 在autoconfigure的pom文件中引入aliyunoss的依赖
将工具类放到com.aliyun.oss包下面
定义一个自动配置类AliOSSConfiguration
javapackage 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; } }
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; }
自定义自动配置文件(要想Spring启动时自动加载该文件必须配置)--两级目录下创建一个文件文件名为
javaorg.springframework.boot.autoconfigure.AutoConfiguration.imports
然后将自动配置文件的全类名复制进去