sorra
V2EX  ›  Java

打算做一个智能 Java Web 框架,自动写代码

  •  2
     
  •   sorra ·
    sorra · Sep 8, 2015 · 5269 views
    This topic created in 4084 days ago, the information mentioned may be changed or developed.
    不再写这种代码:
    User user = userRepo.get (id );
    List<Post> posts = postRepo.recentByUserId (id );
    UserCard userCard = new UserCard ();
    userCard.setId (user.getId ());
    userCard.setName (user.getName ());
    userCard.setAvatar (user.getAvatar ());
    userCard.setPosts (posts );

    而是写这种:
    User user = findById (id );
    Posts posts = recentByField ("userId", id );
    UserCard userCard = autobuild (user, posts );

    findById, recentByField, autobuild 是用来防止 IDE 报错的空方法:
    <T> T autobuild (Object... args )
    编译时追加一个预编译阶段,根据上下文信息,推导生成实现代码,并修改原代码使其调这个实现。
    userRepo, postRepo 这些依赖,会自动添加相应的注入。

    数据的互转、拼装,不用写一坨代码了。对提供数据的 Repository ,不用手动注入了! AOP 也可以直接生成!
    生成的是可读的、平铺直叙的代码,可用于调试,不用去调试九拐十八弯、各种反射的框架代码了。
    无聊代码大减!远离可能出错的手写代码,远离未来的遗留代码。

    理想的结果是使用者只需表达业务逻辑,不用管细节。
    三层架构的表现层、领域层、数据源层,已经简化两层了。
    至于表现层,感觉 Spring MVC 已经够好用了,还能不能更加简化呢?
    14 replies  •  2015-09-21 19:32:03 +08:00
    sorra
    sorra
    OP
    Sep 8, 2015
    1
    开帖收集一下用户痛点
    embbnux
    embbnux
    Sep 8, 2015
    2
    你可以基于 JRUBY 的 rails 代码,和你想要实现的蛮像的
    fwrq41251
    fwrq41251
    Sep 8, 2015
    3
    repo 那个不就是 spring data 吗, object 的复制有各种 beanUtil
    mfaner
    mfaner
    Sep 9, 2015
    4
    UserCard.setUser (User ) 或者 User.createCard (List<Post>) 这样呢
    领域层不是业务逻辑层吗,领域层怎么还用失血模型的
    预编译修改源代码那个叫注解处理器
    reeco
    reeco
    Sep 9, 2015 via iPhone
    5
    可以看看 Jfinal
    gaitana
    gaitana
    Sep 9, 2015
    6
    既然这样写了就不如干脆用动态语言了
    sorra
    sorra
    OP
    Sep 9, 2015
    7
    @mfaner setUser 和 createCard 内部还是要赋值语句实现的,我把这个实现都干掉。
    注解处理器不够强, JRebel 的复杂度比较像我这种,不过它是装载时做的。
    sorra
    sorra
    OP
    Sep 9, 2015
    8
    @fwrq41251 最后做出来应该会比 Spring Data 强。 BeanUtil 似乎不能把多个 object 拼装进一个模型。
    sorra
    sorra
    OP
    Sep 9, 2015
    9
    @gaitana 诶嘿嘿,动态语言确实更彻底一些,我做的数据拼装其实很像 JS 。不过编译期检查是不是挺有用的呢?
    AgentK
    AgentK
    Sep 9, 2015
    10
    groovy scala 笑而不语
    Hxu2M811KVSJqN75
    Hxu2M811KVSJqN75
    Sep 9, 2015
    11
    有没有直接画完 ER 图,就帮你生成好所有 Web 前端代码(无论 DAO 还是 REST API )的开发框架。(提供一个 HTML5/FLASH 的 GUI Web 界面)
    程序员(或者 DBA )只要画好数据模型和关系, 定义几种增删改的逻辑。就自动生成好一套可用可测试可发布的框架代码。

    大多数中小系统基本都在重复做这些事。
    Comdex
    Comdex
    Sep 9, 2015
    12
    要求无 xml 无注解, ok?
    r00tt
    r00tt
    Sep 9, 2015
    13
    ruby 用户表示毫无压力, activerecord 用起来就是爽
    sorra
    sorra
    OP
    Sep 21, 2015
    14
    已经在开发了—— https://github.com/sorra/answerer
    已参加 100offer 开源活动,求票票! http://i.100offer.com/projects?page=9 第一个
    另外,继续收集建议!
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1912 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 12:00 · PVG 20:00 · LAX 04:00 · JFK 07:00
    ♥ Do have faith in what you're doing.