springboot starter diy

使用自定义的springboot starter

e.g. 以阿里云oss为例,自定义一个starter,方便在项目中使用

1. 创建aliyun-oss-spring-boot-starter项目

文件夹中只保留pom.xml和.iml(idea配置文件)

如果没有.iml,可以运行mvn idea:module生成

2. 创建aliyun-oss-spring-boot-starter-autoconfigure项目

在starter中的pom.xml中添加依赖

1
2
3
4
5
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-oss-spring-boot-autoconfigue</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>

alt text

3. 将AliOSSUtils类放入autoconfigure项目中

alt text

发现MultipartFile报错,因为没有引入spring-boot-starter-web依赖

在autoconfigure项目中的pom.xml中添加依赖即可

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

4. 调整AliOSSUtils类

alt text

如果将AliOSSUtils类中的accessKeyId、accessKeySecret、bucketName、endpoint等参数配置到application.properties中,那么就需要使用@EnableConfigurationProperties注解来启用配置属性,同时也需要为new AliOSSUtils()添加一个构造方法,将配置属性传入。

1
2
3
4
5
6
7
8
@ConfigurationProperties(prefix = "aliyun.oss")
public class AliOSSProperties {
private String accessKeyId;
private String accessKeySecret;
private String bucketName;
private String endpoint;
// getter and setter
}

这样properties类中的属性值就可以从application.properties中读取

5. 配置META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

1
com.aliyun.oss.AliOSSAutoConfiguration 

填写自动配置类的全路径,实现自动配置

alt text

6. 测试

在starter项目中的pom.xml中添加依赖

1
2
3
4
5
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-oss-spring-boot-starter</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>

然后配置properties

1
2
3
4
aliyun.oss.access-key-id=xxx
aliyun.oss.access-key-secret=xxx
aliyun.oss.bucket-name=xxx
aliyun.oss.endpoint=xxx

然后就可以使用@Autowired注入AliOSSUtils类,调用方法上传文件了…

总结

说实话,真的会在实际项目中用到这个东西吗?不过了解一下也是好的,毕竟springboot的自动配置机制是非常强大的,可以帮助我们简化很多工作…