当前位置: 首页 > 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/news/315952.html

相关文章:

  • 《深度学习》卷积神经网络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
  • Django高级特性和最佳实践
  • SpringBoot 配置⽂件
  • 【数据结构与算法】LeetCode:二分查找
  • MATLAB给一段数据加宽频噪声的方法(随机噪声+带通滤波器)
  • 【Go】Go 环境下载与安装教程(Windows系统)
  • 九、成功版--windows上安装artifactory配置postgressql
  • [Redis][环境配置]详细讲解
  • Spark-累加器源码分析
  • JS执行机制(同步和异步)
  • 深度学习入门:探索神经网络、感知器与损失函数