feat(framework): 新增 @OssPresignUrl 注解与 ResponseBodyAdvice 自动预签名框架
基于 ResponseBodyAdvice 拦截 CommonResult 响应体,通过反射递归扫描 VO 中标注 @OssPresignUrl 的 String 字段,去重后批量调用 OssPresignUrlApi 一次性完成预签名,再回填到对应字段。 核心设计: - supports() 阶段通过泛型静态分析判断 VO 是否含注解字段, 无注解的接口零开销跳过(类似字典翻译注解思路) - 三级缓存:FIELD_CACHE / ALL_FIELDS_CACHE / HAS_PRESIGN_CACHE - 递归深度限制 MAX_SCAN_DEPTH=10 防止 StackOverflow - 仅扫描 com.viewsh.* 包,规避 Java 17 模块系统限制 - 异常静默降级,保留原始 URL Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
package com.viewsh.framework.common.biz.infra.file;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* OSS 预签名 URL 通用接口
|
||||
* <p>
|
||||
* 由 infra 模块提供实现,供 {@code OssPresignResponseBodyAdvice} 等框架组件使用
|
||||
*/
|
||||
public interface OssPresignUrlApi {
|
||||
|
||||
/**
|
||||
* 批量生成文件预签名地址
|
||||
*
|
||||
* @param urls 原始 URL 列表
|
||||
* @return 签名后的 URL 列表(与入参顺序一致)
|
||||
*/
|
||||
List<String> presignGetUrls(List<String> urls);
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user