当前位置: 首页 > article >正文

自由切换存储方式:本地 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)) {<

http://www.kler.cn/a/315952.html

相关文章:

  • Leecode刷题C语言之统计好节点的数目
  • 【NLP】医学搜索Query相关性判断【阿里云:天池比赛】
  • Go 语言中,golang结合 PostgreSQL 、MySQL驱动 开启数据库事务
  • 微信小程序自定义顶部导航栏(适配各种机型)
  • 删库跑路,启动!
  • 整理iPhone空间:iphone怎么删除相簿
  • 《深度学习》卷积神经网络CNN 原理及其流程解析
  • 网络安全中GET和POST区别在哪?
  • 【原创】java+springboot+mysql党员教育网系统设计与实现
  • 利用WPF绘制轮廓并保存为图片
  • Logstash 安装与部署(无坑版)
  • Vue:加载本地视频
  • 【Opencv知识】图像梯度如何理解?
  • 图文深入理解SQL语句的执行过程
  • Android下反调试与反反调试
  • 开源 AI 智能名片链动 2+1 模式 S2B2C 商城小程序与社交电商的崛起
  • 网络管理:防火墙和安全组配置详解
  • JVM 调优篇7 调优案例4- 线程溢出
  • 【Git】深入理解 Git 版本回退:方法与实践
  • node.js居家养老服务系统—计算机毕业设计源码35247
  • Codeforces Round 974 (Div. 3)D题解析
  • 集群服务器主机实现主机名与IP绑定
  • Linux下操作文件时提示:Operation not permitted
  • 基于软件项目开发流程的软件综合实训室解决方案
  • Windows10安装cuda11.3.0+cudnn8.5.0,以及创建conda虚拟环境(pytorch)
  • sklearn特征选取之RFE