自由切换存储方式:本地 or OSS
文章目录
- 前言
- 一、思路
- 二、开始编码
-
- 1.引入pom
- 2.初始化配置
-
- 数据库对象
- 3.根据配置实例化oss
-
- 枚举
- 本地存储的mvc配置
- 4. 测试下效果
-
- 测试逻辑
- 总结
前言
作为项目中的核心功能,需要灵活强大,例如: 文件管理功能,可以按需引入oss,当没有oss的时候,也应该可用,想实现一种自由切换的工具类,在项目中对外提供,灵活运用
一、思路
- 同样是上传,只是利用的不一样,oss 或者 本地,所以采用策略模式
- 如何实现自由切换? 考虑采用数据库存储配置,利用项目启动初始化这些配置,然后缓存起来,后续用这些根据配置生成的实例去处理
- 本地存储,如何实现与oss同样的效果呢? 采用本地文件夹存储,然后利用mvc配置,导向配置文件夹
二、开始编码
1.引入pom
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.20</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-s3</artifactId>
<version>1.12.263</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
2.初始化配置
代码如下(示例):
@Service
@Slf4j
public class OSSInitService {
@Autowired
private StringRedisTemplate redisTemplate;
@PostConstruct
public void init() {
AmazonS3Util.clear();
// 模拟从数据库获取数据
List<OssConfig> ossConfigList = getList();
// 数据库的数据不需要这么做
String qiehuan = SpringUtil.getBean(StringRedisTemplate.class).opsForValue().get("qiehuan");
if (StrUtil.isNotBlank(qiehuan)) {<