资讯专栏INFORMATION COLUMN

ApiBoot - ApiBoot Resource Load 使用文档

diabloneo / 389人阅读

摘要:注意如果你的方法返回对象只有一个资源对象需要映射,可以多带带配置使用注解。集合资源加载返回值为集合的示例类型作为返回值时,其中注意必须是对象类型。如果你有想要的使用方式,你就可以提交

ApiBoot Resource Load

ApiBoot Resource Load是一款资源与业务完全分离的基础框架,可以整合微服务(Feign、OpenFeign)进行负载均衡读取固定类型、固定所属业务的资源信息,遵循一定的资源存储规则完成自动化资源读取、添加、更新、删除、缓存等。

使用场景

业务图片存储

业务音频、视频文件存储

业务文件

其他资源文件...

引入 ApiBoot Resource Load

pom.xml配置文件内添加如下依赖:



  org.minbox.framework
  api-boot-starter-resource-load
ApiBoot所提供的依赖都不需要添加版本号,但是需要添加版本依赖,具体查看ApiBoot版本依赖
了解ApiBootResourceStoreDelegate

ApiBootResourceStoreDelegate是一个资源数据读取的委托驱动接口,在使用ApiBoot Resource Load时,需要实现该接口完成资源的读取方法loadResourceUrl(),该方法的参数如下所示:

第一个参数sourceFieldValue,是查询资源的业务编号,具体的配置详见下面的示例。

第二个参数resourceType,是查询资源的类型,相同的业务编号下很有可能存在多种类型,比如:用户编号对应用户头像、用户封面等。

ApiBootResourceStoreDelegate示例:

// 示例
@Service
public class ResourceLoadService implements ApiBootResourceStoreDelegate {
    /**
     * logger instance
     */
    static Logger logger = LoggerFactory.getLogger(ResourceLoadService.class);

    @Override
    public List loadResourceUrl(String sourceFieldValue, String resourceType) throws ApiBootException {
        logger.info("查询资源的业务逻辑字段值:{}", sourceFieldValue);
        logger.info("资源类型:{}", resourceType);
        return Arrays.asList(new String[]{"http://test.oss.com/111.png"});
    }
}
loadResourceUrl方法需要返回根据resourceFieldValueresourceType字段查询到的资源列表。
内置注解

@ResourceLoad

标注方法需要进行ApiBoot Resource Load自动化读取资源信息,该注解必须添加,且只能添加在方法上。

@ResourceFields

@ResourceField注解的集合

@ResourceField

配置@ResourceLoad标注的方法具体有哪些字段需要进行资源的自动映射,参数解释如下所示:

name:查询资源后设置到类内Field的名称

source:查询资源所需的业务逻辑编号类内Field的名称

type:资源类型,自行定义

isArray:接收查询后资源的Field类型是否为array,true:array

isList:接收查询后资源的Field类型是否为list,true:list

单对象资源加载

资源加载一般都是实体类的方式进行返回的,下面我们先来创建一个实体类方便示例测试,如下所示:

/**
  * 示例对象
  */
@Data
class SampleUserInfo {
  public SampleUserInfo(String userId, int age) {
    this.userId = userId;
    this.age = age;
  }

  private String userId;
  private String headImage;
  private String shortImage;
  private int age;
}

返回值为单对象资源加载示例:

/**
  * 返回值为单个对象的示例
  *
  * @return
  */
@ResourceLoad
@ResourceFields({
  @ResourceField(name = "headImage", source = "userId", type = "HEAD_IMAGE"),
  @ResourceField(name = "shortImage", source = "userId", type = "SHORT_IMAGE")
})
public SampleUserInfo singleObjectSample() {
  return new SampleUserInfo("yuqiyu", 24);
}
在上面,我们配置读取两种类型的资源,分别是:HEAD_IMAGESHORT_IMAGE,而且配置的业务资源编号都是userId字段,这两个字段也就是会传递给ApiBootResourceStoreDelegate#loadResourceUrl方法作为参数。

其中HEAD_IMAGE读取到的资源路径设置到SampleUserInfo类内的headImageSHORT_IMAGE读取到的资源路径设置到SampleUserInfo类内的shortImage字段。

注意:如果你的方法返回对象只有一个资源对象需要映射,可以多带带配置使用@ResourceField注解。

List集合资源加载
/**
  * 返回值为list集合的示例
  *
  * @return
  */
@ResourceLoad
@ResourceFields({
  @ResourceField(name = "headImage", source = "userId", type = "HEAD_IMAGE"),
  @ResourceField(name = "shortImage", source = "userId", type = "SHORT_IMAGE")
})
public List listSample() {
  List users = new ArrayList();
  users.add(new SampleUserInfo("yuqiyu", 24));
  users.add(new SampleUserInfo("hengboy", 24));
  return users;
}

在上面,会为返回值list内的每一个SampleUserInfo对象进行设置查询的资源信息。

Map集合资源加载
/**
  * 返回值为map集合的示例
  *
  * @return
  */
@ResourceLoad
@ResourceFields({
  @ResourceField(name = "headImage", source = "userId", type = "HEAD_IMAGE"),
  @ResourceField(name = "shortImage", source = "userId", type = "SHORT_IMAGE")
})
public Map mapSample() {
  Map users = new HashMap<>(2);
  users.put("yuqiyu", new SampleUserInfo("yuqiyu", 24));
  users.put("hengboy", new SampleUserInfo("hengboy", 24));
  return users;
}

Map类型作为返回值时,其中注意map -> value必须是对象类型。

如果你有想要的使用方式,你就可以提交issuse!!!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/74139.html

相关文章

  • ApiBoot 2.0.4.RELEASE版本发布

    摘要:是一款基于的接口服务集成基础框架,内部提供了框架的封装集成,让接口开发者完成开箱即用,不再为搭建接口框架而犯愁,从而极大的提高开发效率。 ApiBoot是一款基于SpringBoot1.x、SpringBoot2.x的接口服务集成基础框架,内部提供了框架的封装集成,让接口开发者完成开箱即用,不再为搭建接口框架而犯愁,从而极大的提高开发效率。通过在我的SpringBoot系列教程中得到的...

    JellyBool 评论0 收藏0
  • ApiBoot - ApiBoot Swagger 使用文档

    摘要:相关配置配置参数参数介绍默认值是否启用文档标题快速集成文档文档描述通过自动化配置快速集成文档,仅需一个注解一个依赖即可。注意通过所获取的类型都为。 ApiBoot是一款基于SpringBoot1.x,2.x的接口服务集成基础框架, 内部提供了框架的封装集成、使用扩展、自动化完成配置,让接口开发者可以选着性完成开箱即用, 不再为搭建接口框架而犯愁,从而极大...

    yuanxin 评论0 收藏0
  • ApiBoot - ApiBoot Security Oauth 依赖使用文档

    摘要:如果全部使用默认值的情况话不需要做任何配置方式前提项目需要添加数据源依赖。获取通过获取启用在使用格式化时非常简单的,配置如下所示开启转换转换时所需加密,默认为恒宇少年于起宇默认不启用,签名建议进行更换。 ApiBoot是一款基于SpringBoot1.x,2.x的接口服务集成基础框架, 内部提供了框架的封装集成、使用扩展、自动化完成配置,让接口开发者可以选着性完成开箱即...

    Tonny 评论0 收藏0
  • ApiBoot - ApiBoot Alibaba Sms 使用文档

    摘要:的短信服务模块是由阿里云的国际短信服务提供的,支持国内和国际快速发送验证码短信通知和推广短信。前提需要到阿里云控制台申请开通短信服务。如果在阿里云控制台定义的短信模板存在多个参数,可以通过方法来进行挨个添加,该方法返回值为本对象。 ApiBoot是一款基于SpringBoot1.x,2.x的接口服务集成基础框架, 内部提供了框架的封装集成、使用扩展、自动化完成配置,让接...

    cheng10 评论0 收藏0
  • ApiBoot - ApiBoot Http Converter 使用文档

    摘要:如下所示不配置默认使用自定义是的概念,用于自定义转换实现,比如自定义格式化日期自动截取小数点等。下面提供一个的简单示例,具体的使用请参考官方文档。 ApiBoot是一款基于SpringBoot1.x,2.x的接口服务集成基础框架, 内部提供了框架的封装集成、使用扩展、自动化完成配置,让接口开发者可以选着性完成开箱即用, 不再为搭建接口框架而犯愁,从而极大...

    dance 评论0 收藏0

发表评论

0条评论

diabloneo

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<