还是那句话,既然吃了面向对象编程这碗饭,能不重复造轮子就尽量不造,今天介绍一款Java开发工具包feilong-core
一、背景
在JAVA开发过程中,经常看到小伙伴直接从网上copy一长段代码来使用,又或者写的代码很长很长很长...
痛点在于:
feilong-core focus on J2SE是feilong platform的核心项目,创建于2008年
愿景: Reduce development,Release ideas (减少开发,释放思想), 希望可以减少书写重复且繁杂的代码,让你从大量重复的底层代码中脱身,提高工作效率;多思考业务的完整性,让你的代码更简炼,易写、易读、易于维护;
经过多个版本迭代,已经逐步走向稳定
二、feilong-core介绍
1. 简介:
2. feilong-core 优点:
使用 feilong-core 的理由
3. feilong-core亮点之处
4. feilong-core工具包大全
feilong-core工具包
5. 部分功能图解
feilong-core功能图解
三、feilong-core常用API操作
1. ConvertUtil操作集合工具类
以前调用某个api时,该api需要一个list参数,但是你现在只有单对象,这个场景你的代码会怎么写?
以前你要这么写:
- List
itemIds = new ArrayList<>(); - itemIds.add(itemId);
- sdkItemManager.findItemImageByItemIds(itemIds);
现在你可以这么写:
- sdkItemManager.findItemImageByItemIds(ConvertUtil.toList(itemId));
使用ConvertUtil.toList()方法,你只需要一行代码就可以搞定,代码简洁又清爽。
同样,下面的代码
以前你是这么写:
- List
skuIds = new ArrayList<>(); - skuIds.add(9L);
- skuIds.add(10L);
- skuIds.add(13L);
- skuIds.add(18L);
- skuIds.add(20L);
- BundleValidateResult result = bundleManager.validateBundle(skuIds);
现在你可以简写:
- List
skuIds=ConvertUtil.toList(9L, 10L, 13L, 18L, 20L); - BundleValidateResult result = bundleManager.validateBundle(skuIds);
代码的可读性更高,更简洁
2.CollectionsUtil.getPropertyValueList(Collection, String)
CollectionsUtil.getPropertyValueList(Collection , String) : 表示简化循环遍历集合,取到对象指定的属性 propertyName 的值,然后调用list.add()方法添加到集合中,拼成 List(ArrayList) 这一过程
比如: 要提取SalesOrderCommand list里面的id属性组成 List
以前你要这么写:
- List
salesOrderList = sdkOrderDao.findOrdersWithOutPage(sorts, searchParam); - //...
- List
idList = new ArrayList<>(salesOrderList.size()); - for (SalesOrderCommand cmd : salesOrderList){
- idList.add(cmd.getId());
- }
- //查询订单行
- List
allLineList = sdkOrderLineDao.findOrderDetailListByOrderIds(idList);
现在你可以这么写:
- List
salesOrderList = sdkOrderDao.findOrdersWithOutPage(sorts, searchParam); - //...
- List
idList =CollectionsUtil.getPropertyValueList(salesOrderList, "id"); - //查询订单行
- List
allLineList = sdkOrderLineDao.findOrderDetailListByOrderIds(idList);
现在只需写CollectionsUtil.getPropertyValueList(salesOrderPage, "id") 这段代码,可以一行搞定 。
Tips: 相似的方法,还有CollectionsUtil.getPropertyValueSet(Collection , String)以及 CollectionsUtil.getPropertyValueMap(Collection , String, String)。
3. 不能不说的异常处理
众所周知,JAVA有checked exception 和 uncheckedException之分,也就是我们常说的 RuntimeException和 Exception。
checked exception有其使用场景,但是我们日常开发过程中,并没有对他做特殊的代码处理
比如,大部分小伙伴的代码是这样的:
- public ContactCommand toContactCommand(ContactCommand command) {
- try {
- BeanUtils.copyProperties(command, this);
- } catch (Exception e){
- log.error("", e);
- //or e.printStackTrace();
- }
- return command;
- }
其实细究下来,上述代码是不合理的, 如果转换的时候出现了异常,这里就会出现数据没有转换过去的情况,
这理论上是 RuntimeException,但是org.apache.commons.beanutils.BeanUtils ``里面使用的是Exception,所以小伙伴不能不try... catch一下,可是catch `代码里面有可能仅仅写了log记录,这有可能会出现逻辑问题 (本来需要抛出异常让事务回滚)。
这时可以使用com.feilong.core.bean.BeanUtil
- public ContactCommand toContactCommand(ContactCommand command){
- com.feilong.core.bean.BeanUtil.copyProperties(command, this);
- return command;
- }
当然,如果你确定copy的对象相同属性名称的类型是一致的,你可以使用 PropertyUtil,可以有效的避免不必要的类型转换,提高效率
代码简洁,而且内部包装成的是自定义的 BeanOperationException(RuntimeException),如果需要特殊处理,依然可以 try...catch...
4. 有丰富的javadoc
调用方法的时候,可以清晰的感知这个方法的 作用,示例,说明点,参数,返回值,异常等信息。
源码示例:
- /**
- * 计算两个时间相差的的天数(绝对值).
- *
- *
说明:
- *
- *
- * 值=两个时间相差毫秒的绝对值/{@link TimeInterval#MILLISECOND_PER_DAY}
- *
- *
- *
- *
示例:
- *
- *
- *
- *
- * DateExtensionUtil.getIntervalDay(
- * toDate("2008-08-24",COMMON_DATE),
- * toDate("2008-08-27",COMMON_DATE)) = 3
- *
- * DateExtensionUtil.getIntervalDay(
- * toDate("2016-08-21 12:00:00",COMMON_DATE_AND_TIME),
- * toDate("2016-08-22 11:00:00",COMMON_DATE_AND_TIME)) = 0
- *
- * DateExtensionUtil.getIntervalDay(
- * toDate("2016-08-21",COMMON_DATE),
- * toDate("2016-08-22",COMMON_DATE)) = 1
- *
- * DateExtensionUtil.getIntervalDay(
- * toDate("2016-02-28",COMMON_DATE),
- * toDate("2016-03-02",COMMON_DATE)) = 3
- *
- * DateExtensionUtil.getIntervalDay(
- * toDate("2016-08-31",COMMON_DATE),
- * toDate("2016-09-02",COMMON_DATE)) = 2
- *
- *
date1
是null,抛出 {@link NullPointerException}date2
是null,抛出 {@link NullPointerException} 如果你使用maven的话,只需要在依赖的jar 右键,maven--> download javadoc 或者 download sources会自动下载。
四、Maven使用配置
1. 如果你是导入jar包到工程
下载地址: https://github.com/venusdrogon/feilong-platform/tree/repository/com/feilong/platform/feilong-core
2. 如果你是Maven构建
- ....
2.1.0 - ....
- ....
feilong-repository https://raw.github.com/venusdrogon/feilong-platform/repository - ....
- ....
com.feilong.platform feilong-core ${version.feilong-platform} - ....
- ....
3. feilong-util-all(全家桶,含IO操作,Net操作,Json,等工具类)
- ....
2.1.0 - ....
- ....
feilong-repository https://raw.github.com/venusdrogon/feilong-platform/repository - ....
- ....
com.feilong.platform feilong-util-all ${version.feilong-platform} - ....
- ....
五、feilong依赖的第三方包
1. maven 依赖
org.apache.commons commons-lang3 3.6 org.apache.commons commons-collections4 4.1 commons-beanutils commons-beanutils 1.9.3
2. 你也可以自行下载:
commons-lang3
commons-collections4
commons-beanutils
六、feilong-core API大纲
七、参考
feilong-core: http://feilong-core.mydoc.io/
本文名称:Feilong-core,一个让Java开发更简便的工具包
地址分享:http://www.csdahua.cn/qtweb/news38/322138.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网