springboot读取配置文件中的列表类型的参数报错

报错信息
Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'file.types' in value "${file.types}"

image-20231119231715869

配置文件内容:
    file:
      # 支持的类型
      types:
        - "png"
        - "jpg"
        - "AVI"
        - "mov"
        - "mp4"
要注入的属性字段
@Value("${file.types}")
private List<String> types;
报错原因

配置文件中的列表类型,无法直接使用List直接接收,需要创建配置类读取配置文件的方式注入

解决方式
创建配置类
/**
 * 上传文件配置
 */
@Data
@ConfigurationProperties(prefix = FileProperties.PROP_PREFIX)
@Component
@EqualsAndHashCode(callSuper = false)
public class FileProperties {
    public static final String PROP_PREFIX = "file";

    private List<String> types;

}

修改之后,重新启动项目无报错。

当使用 Spring Boot 和 MinIO 实现异步上传文件过程遇到速度过快导致的错误时,通常会出现以下几个原因: 1. **并发控制不足**:如果在短时间内有大量请求同时尝试访问 MinIO 存储服务,可能会因为 MinIO 的并发处理能力有限而导致超时、拒绝服务或错误响应。 2. **网络延迟**:高速上传可能导致本地设备与 MinIO 服务器之间的网络延迟增加,尤其是在远程部署的情况下。这种高数据流量可能超过了网络带宽限制。 3. **MinIO 配置问题**:MinIO 服务器的配置可能无法满足高并发上传的需求,例如,缓冲区大小、线程池大小等设置不当都可能导致性能瓶颈。 4. **资源限制**:操作系统或容器环境可能对上传操作存在资源限制,如CPU、内存或磁盘I/O限制。 ### 解决方案 1. **优化 MinIO 配置**: - **增加线程池大小**:通过调整 `threads` 参数增加并行任务的数量。 - **增大缓存区大小**:提高读取和写入缓冲区的大小可以减少系统 I/O 操作的压力。 2. **分批上传策略**: - 将大文件分割成小块,并分别上传,可以降低每次上传的数据量,减轻单次上传的负载压力。 3. **引入限流机制**: - 使用 Spring Cloud 或者自定义的限流组件,在客户端或服务端添加速率限制,防止短时间内大量请求涌入,避免超时或资源耗尽。 4. **增强网络连接管理**: - 对于高并发场景,考虑使用连接池技术,合理管理到 MinIO 服务器的连接数,避免频繁建立新连接导致的额外开销。 5. **监控与日志**: - 加强对应用和 MinIO 服务器的监控,包括但不限于请求响应时间、错误率、资源使用情况等,及时发现问题并调整策略。 6. **测试与压力测试**: - 进行充分的压力测试,模拟高并发场景下系统的稳定性和性能表现,以便提前发现潜在问题并进行优化。 通过以上措施,可以有效提升使用 Spring Boot 和 MinIO 的异步上传功能时的稳定性与效率。记得在实施变更后持续监控系统的表现,以确保解决问题的同时不会带来新的副作用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值