工具类

引入BASE 模块后可以使用到一下工具类,他可以在 java环境,groovy环境中使用。

除此之外我们还引入了 hutool 工具类,请自行查阅相关文档。

上下文工具类-ContextUtil

主要提供当前用户上下文的信息

  • IUser getCurrentUser() :获取当前线程的登录用户(LoginUser)
  • String getCurrentUserId() :获取当前线程登录用户的ID
  • String getCurrentUserName() :获取当前线程登录用户的名字
  • String getCurrentUserAccount() : 获取当前线程用户的账户
  • IGroup getCurrentGroup() :获取当前组织
  • String getCurrentGroupId() :获取当前组织ID
  • void setCurrentUserByAccount :通过账户设置当前线程用户,特殊场景下使用

List 转 Tree 工具类

主要将 list 类型的数据结构转成 树形,非常高效、有用。万条以内的树形数据从此告别异步加载

BeanUtils.listToTree

<T extends Tree> List<T> listToTree(List<T> list)

T 需要实现接口 com.dstz.base.api.model.Tree

Bean 属性 复制

用于 DTO 与 Model 属性的复制

BeanCopierUtils.transformBean :单个bean的copy

User source = new User(); //
UserDTO user = BeanCopierUtils.transformBean(Object source,UserDTO.class);

BeanCopierUtils.transformList:list类型的copy

List<User> sourceList // ...
List<UserDTO> listUser = BeanCopierUtils.transformList(sourceList,UserDTO.class);

属性复制使用的 cglib,速度还是蛮快的,但是建议小场景的使用,如果大范围建议使用 mapStruct

Bean 校验

validate3.0规范的校验,使用的 hibernate 的 ValidatorFactory实现,可以使用 validateUtil 手动对某个bean执行校验判断

如果校验不通过将抛出 BusinessException 异常

ValidateUtil.validate(Object o);

Rest 请求工具类

利用 RestTemplate 发起一个request请求,并中继 Token 信息

  • RestTemplateUtil.post(String url, Object data, Class responseType)
// 向一个地址发起一个请求,并把结果转成ResultBean
ResultMsg<JSONObject> resp = RestTemplateUtil.post(url, remoteBusinessData, ResultMsg.class);
  • RestTemplateUtil.post(String url, Object data,ParameterizedTypeReference typeReference)
// 复杂数据结构的请求并转换
ParameterizedTypeReference<ResultMsg<FormHandlerResult>> typeReference = new ParameterizedTypeReference<ResultMsg<FormHandlerResult>>() {};
ResultMsg<FormHandlerResult> msg = RestTemplateUtil.post(url, remoteData,typeReference);

系统属性工具类

会根据当前系统环境,优先获取本环境的配置,如果不存在则获取DEV环境的配置
【系统管理】-【系统属性管理】

  • SysPropertyUtil.getByAlias(String alias)

获取系统属性

String adminAccounts = SysPropertyUtil.getByAlias("admin.accounts");

  • SysPropertyUtil.getByAlias(String alias,String defaultValue)

获取系统属性,如果未配置则返回默认值

ApplicationContext 工具类

主要提供 Spring Application Context 工具类

  • Object getBean(String beanId) :通过SpringBeanId 获取applicationContext中的Bean
  • T getBean(Class beanClass) :通过Class 获取applicationContext中的Bean
  • Map<String, T> getImplInstance(Class clazz) :获取接口的实现类实例 Map<BeanId,Bean> 形式
  • List getImplInstanceArray(Class clazz) :获取接口的实现类实例 List 形式