You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为Spring Content的S3ContentStore添加存储类参数的实现问询

Spring Content S3ContentStore 扩展:添加存储类参数问题

我们已在使用Spring Content的JpaContentStore和FileContentStore,现正添加S3ContentStore支持,但通过setContent上传文件时缺少关键的存储类参数。

已尝试的解决方案

1. 自定义扩展接口

创建自定义MyS3ContentStore接口,扩展S3ContentStore并新增带存储类参数的setContent方法:

@LockParticipant
E setContent(E entity, InputStream content, StorageClass storageClass);

2. 编写实现类

编写对应的实现类MyS3ContentStoreImpl,继承DefaultS3StoreImpl并实现自定义接口:

@Transactional
public class MyS3ContentStoreImpl<E, CID extends Serializable> extends DefaultS3StoreImpl<E, CID>
        implements MyS3ContentStore<E, CID> {

    public MyS3ContentStoreImpl(ApplicationContext context, ResourceLoader loader, MappingContext mappingContext, PlacementService placementService, S3Client client, MultiTenantS3ClientProvider provider) {
        super(context, loader, mappingContext, placementService, client, provider);
    }

    @Override
    public E setContent(E entity, InputStream content, StorageClass storageClass) {
        return setContent(entity, content);
    }
}

注:原代码中构造方法名AMyS3ContentStoreImpl应为MyS3ContentStoreImpl,此处已修正

3. 配置与仓库创建

  • 使用@EnableS3Stores并指定basePackages以扫描自定义类
  • 为实体ArchivedFile创建对应的仓库接口:
@Repository
public interface MyS3Store extends MyS3ContentStore<ArchivedFile, UUID> {}

遇到的问题

尝试多种配置后仍无法正常运行,时而出现类找不到的问题,时而因创建多个myS3Store#StoreFragments Bean报错。

咨询问题

  • 实现该需求的最佳方式是什么?
  • 有哪些必须遵循的规范?
  • 还有哪些可能遗漏的要点?
  • 参考过Azure示例,但它是全新的存储实现,包含大量不同包下的类,不确定是否需要全部类及是否需遵循特定包规则。

内容的提问来源于stack exchange,提问作者RalleN66

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 11:10:32