第一步:创建两个模块
第一个: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.就可以注入阿里云的工具类,调用里面的方法,进行使用了