首页 > 编程语言 >Java | 图片地址查询返回参数自动拼接图片前缀地址

Java | 图片地址查询返回参数自动拼接图片前缀地址

时间:2024-08-10 16:39:15浏览次数:14  
标签:Java URL StrUtil 地址 拼接 sb import 图片

代码介绍

自定义的JsonSerializer来处理图片URL的拼接,增加了灵活性和可配置性。

关键点:

  1. 自动拼接域名:通过properties.getEndpoint()从配置文件中获取Minio接口域名,然后根据条件决定是否拼接域名。
  2. 处理多个图片URL:代码处理了可能包含多个图片URL的情况(以逗号分隔),并且确保了每个URL都得到正确处理。
  3. 条件判断:对于已经是完整HTTP URL的图片,不会重复拼接域名,而是直接使用原有的URL。

细节优化建议:

  • 空值检查StrUtil.isBlank(value)StrUtil.isBlank(properties.getEndpoint()) 的检查确保了在处理空值时不会出现异常。
  • 正则匹配:通过ReUtil.isMatch(PatternPool.URL_HTTP, img)判断是否为完整URL,这样可以避免重复拼接。

其他注意事项:

  • 性能:如果系统中有大量图片需要处理,确保正则表达式的效率和字符串拼接的性能可以满足需求。
package com.echo.common.ImgJson;

import cn.hutool.core.lang.PatternPool;
import cn.hutool.core.util.ReUtil;
import cn.hutool.core.util.StrUtil;
import com.echo.common.minio.MinioProperties;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.io.IOException;

@Component
public class ImgJsonSerializer extends JsonSerializer<String> {

    @Autowired
    private MinioProperties properties;

    @Override
    public void serialize(String value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
        if (StrUtil.isBlank(value)) {
            gen.writeString(StrUtil.EMPTY);
            return;
        } else if (StrUtil.isBlank(properties.getEndpoint())) {
            gen.writeString(value);
            return;
        }
        String[] imgs = value.split(StrUtil.COMMA);
        StringBuilder sb = new StringBuilder();
        for (String img : imgs) {
            if (ReUtil.isMatch(PatternPool.URL_HTTP, img)) {
                sb.append(img).append(StrUtil.COMMA);
            } else {
                sb.append(properties.getEndpoint()).append(img).append(StrUtil.COMMA);
            }
        }
        sb.deleteCharAt(sb.length() - 1);
        gen.writeString(sb.toString());
    }
}

使用了hutool依赖,需引入

使用方式

  @Schema(description = "图片地址")
  @JsonSerialize(using = ImgJsonSerializer.class)
  private String imgUrl;

返回参数自动拼接图片前缀地址
web项目图片地址统一前缀处理

标签:Java,URL,StrUtil,地址,拼接,sb,import,图片
From: https://www.cnblogs.com/echohye/p/18352456

相关文章

  • Java每日一练06
    这里写目录标题一级目录二级目录三级目录题目1.一般情况下,以下哪个选项不是关系数据模型与对象模型之间匹配关系?2.transient变量和下面哪一项有关?3.线程安全的map在JDK1.5及其更高版本环境有哪几种方法可以实现?4.使用mvc模式设计的web应用程序具有以下优点,除了?5.......
  • Java中字符串的常量池
    计算机存储中存在一个堆区域,堆区域中存在一个常量池,当申请了字符串变量后,会将值放入常量池中,下次申请新的变量时,会优先从常量池中查找,如果常量池中已经存在,则变量会直接指向常量池中的值,从而节省空间(jdk1.8之后的字符串常量池存在于堆中) Stringx1="aaa";//在常量池......
  • java实现解析pdf格式发票
    为了减少用户工作量及误操作的可能性,需要实现用户上传PDF格式的发票,系统通过解析PDF文件获取发票内容,并直接将其写入表单。以下文章记录了功能实现的代码。发票样式发票内容解析引用Maven使用pdfbox<dependency><groupId>org.apache.pdfbox</groupId><artif......
  • Java知识点1
    Java知识点什么是字节码?采用字节码的好处是什么?在Java中,JVM可以理解的代码就叫做字节码(即扩展名为.class的文件),它只面向虚拟机。Java语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。字节码并不针对一种特定......
  • java导出pdf
    文章目录概要maven包进入工具类使用示例注意事项概要java利用itextpdf导出pdfmaven包进入 <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.13.3</version> </dependency> ......
  • Java--实例化
    目录五种方法构造器定义特点作用构造方法种this的使用五种方法无论哪一种方式必须经过的一步---调用构造方法。无论怎样构造函数作为初始化类的意义怎样都不会改变。new语句创建对象,最常用创建对象的方法工厂方法返回对象,如:Stringstr=String.valueOf();反射,调用java......
  • Java SpringBoot实现PDF转图片
    不是单页图片,是多页PDF转成一张图片的逻辑。我这里的场景是PDF转成图片之后返回给前端,前端再在图片上实现签字,并且可拖拽的逻辑,就是签订合同的场景。但是这里只写后端多页PDF转图片的逻辑。先说逻辑,后面直接上代码,大致分为以下几步:读取PDF文件(我的代码里是将在线的URL转成Inp......
  • 开源图片编辑器的插件化架构
    大家好,我是开源图片编辑器的作者,在开发图片编辑器的过程中,因为一些功能无法扩展,出现过一次较大的重构,将整个编辑器改为了插件化的架构,经历过这次重构,规范了编辑器功能的扩展方式,解决了项目里很多重要的问题。如果你也在做类似的项目,或者对图片编辑器架构比较感兴趣,希望我的经验能......
  • Java常用类
    目录String类日期时间类数学类包装类Runtime类1.获取运行时环境信息2.Runtime类的实例化和使用3.执行系统命令System类1.标准输入输出和错误输出2.系统属性3.时间和日期4.数组操作5.其他重要方法String类字符串常量池常见方法charAt(intindex):返回字符串指定位置的字......
  • Java--String类查找方法
    目录1.indexOf(Stringstr)2.indexOf(Stringstr,intfromIndex)3.lastIndexOf(Stringstr)4.lastIndexOf(Stringstr,intfromIndex)5.contains(CharSequences)6.startsWith(Stringprefix)7.endsWith(Stringsuffix)booleanequalsStringtrim在Java中,String类提供了......