V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
DtFlys
V2EX  ›  Java

我的开源项目在五个月内超过了 600 star

  •  
  •   DtFlys · 2021-01-08 12:46:33 +08:00 · 6684 次点击
    这是一个创建于 1399 天前的主题,其中的信息可能已经有所发展或是发生改变。

    其实我在 2016 年年底就开始写了这个项目:Forest,一个能够将 HTTP 的所有请求信息(包括 URL 、Header 以及 Body 等信息)绑定到您自定义的 Interface 方法上,能够通过调用本地接口方法的方式发送 HTTP 请求的 Java 框架。

    而当时并不知道有 Feign 的存在,Retrofit 也只是听说在 Android 上使用的类似框架,在 Java 后端没有相应的、能和 Spring 或 SpringBoot 良好集成的对应物。只能老老实实用 HttpClient 进行包装,导致我们公司项目有各种各样对 HTTP 千奇百怪的工具类封装,大多只要工具类的作者知道怎么使用。由于要大量请求第三方 Restful 服务,一段时间之后,各种第三方服务的 URL 变得难以管理,靠一个配置文件难以 hold 住各种不同的请求方法、有 Head 传参、有 Body 传参、有 JSON 格式、有 XML 格式。

    所以我当时的需求很简单:有这样一个框架,能统一管理项目中所有第三方 URL 接口,不管是 HTTP 还是 HTTPS,是 JSON 还是 XML,是传 Query 参数还是 Body 表单数据,都能用一种统一且优雅的方式给描述出来,还能让不同的开发人员一目了然地知道这些接口是做什么的,url 是什么、body 是什么一看便知。

    MyBatis 正好在这时候是国内最火的时候,JPA 也有用过,我就自然而然想到了用 Java 接口 + 注解的方式。接下来花了 1 个月就将 Forest 第一版就写好了,然后用它写了自己项目部分网络请求部分,之后便在公司内部推广开了,其中也是不断碰到问题不断解决的过程。

    之前做开源 5 、6 年了,但真正入门,关于如何运营一个开源项目还是这最近 4 个月的事。 一开始只是将项目放到 Github 、Gitee,然后发一篇推广文就结束了,不知道后续工作要做什么,也不想去做。 所以几年来项目几乎无人问津、一直处于将死不死的状态。

    直到 2020 年 7 月份开始,才意识到这样下去是行不通的。开源的关键还在于社区,需要有一个不断向你反馈问题的管道。于是开通了微信群,通过适当的推广不断有人加入进来,不断有人提出问题,不断反馈 BUG,我便引来了高考后最繁忙的几个月。进入到这样一个正向循环后会感到很忙、很累,每天都有解决不完的问题,上班完成公司工作之后,晚上要维护更新开源项目到凌晨 2 、3 点。但带来的收获也是可观的,除了见证了 Forest star 数的增长,也感受到了自身的成长,虽然没有经济利益上的收益(还要贴钱进去 〒▽〒)。但能看到自己的工作能带给其他程序猿价值,也是种无法言语的成就感。

    哈哈,感谢看了我那么多废话,如果 Forest 对您有帮助,请 star 一下哦~

    33 条回复    2021-01-14 13:58:09 +08:00
    kaka6
        1
    kaka6  
       2021-01-08 13:24:10 +08:00
    优秀优秀
    vus520
        2
    vus520  
       2021-01-08 13:46:12 +08:00
    高中弟弟?
    haosamax
        3
    haosamax  
       2021-01-08 13:46:23 +08:00
    up!
    monetto
        4
    monetto  
       2021-01-08 13:49:16 +08:00 via iPhone
    @vus520 楼主说的是这是高考之后以来的最忙的事。理解力啊老哥。
    young1lin
        5
    young1lin  
       2021-01-08 14:23:00 +08:00
    为什么你们的那几个 Factory 类,有些用 System.out.println 输出日志,还有代码注释掉不删的呢....是有什么特殊的地方吗? ForestSSLConnectionFactory 、HttpclientForestResponseFactory
    bryan31
        6
    bryan31  
       2021-01-08 14:47:11 +08:00
    牛逼,已 star
    DtFlys
        7
    DtFlys  
    OP
       2021-01-08 14:47:14 +08:00
    @young1lin System.out.println 准备删掉了,只留下 log.info 输出的的日志
    young1lin
        8
    young1lin  
       2021-01-08 15:18:29 +08:00
    @DtFlys 感觉整合 Spring 的那个,和 MyBatis 整合的差不多,也是 FactoryBean + 间接继承 ClassPathScanningCandidateComponentProvider 。不过 MyBatis 是自己定义 Log 类的,Spring 是用 Apache 的 Log 类,你们是依赖 Slf4j 。
    foxcell
        9
    foxcell  
       2021-01-08 15:20:22 +08:00
    这玩意好,最近写一些 http 请求,挺烦的
    DtFlys
        10
    DtFlys  
    OP
       2021-01-08 15:22:17 +08:00
    @young1lin 对的,被你一眼就看出来了
    moonrailgun
        11
    moonrailgun  
       2021-01-08 15:44:25 +08:00
    我比较关心适当的推广是什么推广
    tikazyq
        12
    tikazyq  
       2021-01-08 15:50:24 +08:00
    我会告诉你我的项目 1 个月内 1k stars 么 :D
    DtFlys
        13
    DtFlys  
    OP
       2021-01-08 16:06:29 +08:00
    @tikazyq 牛逼啊大佬
    hefish
        14
    hefish  
       2021-01-08 16:07:10 +08:00
    是个好东西,star 了。最近想搞清楚 java 的注解,但年纪大了,搞了几天都没法完全搞懂。等空下来继续搞。谢谢 lz 。
    DtFlys
        15
    DtFlys  
    OP
       2021-01-08 16:11:31 +08:00
    @hefish 谢谢 star
    AndyAO
        16
    AndyAO  
       2021-01-08 16:16:00 +08:00
    自己的工作能够被别人认可

    是个令人感到愉快的事情

    谢谢你分享这些宝贵的经验
    DtFlys
        17
    DtFlys  
    OP
       2021-01-08 16:43:37 +08:00
    @AndyAO 过奖了,我也只是扯一些自己的浅见,比我厉害的大佬多的是
    ArJun
        18
    ArJun  
       2021-01-08 17:17:58 +08:00
    竟然不放到 github 的哦,这么大的交友网站都不用
    DtFlys
        19
    DtFlys  
    OP
       2021-01-08 17:24:53 +08:00
    @ArJun 有放到 github: https://github.com/mySingleLive/forest
    只不过重心还是在 Gitee
    lzuntalented
        20
    lzuntalented  
       2021-01-08 17:53:04 +08:00
    厉害呀,我的开源快两年了只有 300 星
    DtFlys
        21
    DtFlys  
    OP
       2021-01-08 18:04:56 +08:00
    @lzuntalented 不错了,我的项目在 gtiee 上也有 2 年多时间了,但真正的增长是近几个月才有的,之前 2 年多只有 100 不到的 star
    PoetAndPoem
        22
    PoetAndPoem  
       2021-01-08 18:09:21 +08:00
    部署,上手快吗
    DtFlys
        23
    DtFlys  
    OP
       2021-01-08 18:15:07 +08:00
    @PoetAndPoem 照着文档做,啪的一下,很快的
    Rache1
        24
    Rache1  
       2021-01-08 19:01:18 +08:00   ❤️ 1
    这个文档的对比度太高了,刺眼睛
    Helsing
        25
    Helsing  
       2021-01-08 21:40:41 +08:00 via iPhone
    Retrofit 就是设计给 Java 用的,底层是用的 okhttp,Android 要加别的库才可以使用
    gaoyujian2015
        26
    gaoyujian2015  
       2021-01-09 09:54:56 +08:00
    请教下楼主怎么做早期的宣传推广,最近也想把一些项目开源但是不知道怎么宣传
    yazoox
        27
    yazoox  
       2021-01-09 18:23:05 +08:00
    又有需要学习的了
    LowBCoder
        28
    LowBCoder  
       2021-01-09 19:32:20 +08:00
    是不是相当于于 SpringBoot 版本的 Feign ?
    DtFlys
        29
    DtFlys  
    OP
       2021-01-09 22:12:56 +08:00
    @Helsing 是的,我后来也有所了解,不过 Retrofi 和 SpringBoot 没有直接的集成,不过最近有个国内的小伙做了 retrofit-spring-boot 也挺好的
    DtFlys
        30
    DtFlys  
    OP
       2021-01-09 22:13:53 +08:00
    @LowBCoder Feign 本身就可以和 SpringBoot 集成,当然也可以不集成,不过 Feign 更多的是用来微服务领域作为 RPC 框架。
    DtFlys
        31
    DtFlys  
    OP
       2021-01-09 22:15:57 +08:00
    @gaoyujian2015 首先需要把文档写好,不但要写的详细,还是写的简单易懂,容易上手,最好能配合一些上手的 Demo 更好。此外再是写一些文章介绍你的项目,投放到一些流量高的平台,至于文章写得好不好就看你本事了。
    SkyLine7
        32
    SkyLine7  
       2021-01-12 16:29:01 +08:00
    大佬牛逼,坚持就是胜利
    lrvinye
        33
    lrvinye  
       2021-01-14 13:58:09 +08:00
    针不戳!希望可以一直维护下去,别用着用着没了 :(
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1029 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 22:15 · PVG 06:15 · LAX 14:15 · JFK 17:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.