【问题标题】:Understanding a reasonably large Java Web App Codebase了解相当大的 Java Web App 代码库
【发布时间】:2015-03-09 23:58:28
【问题描述】:

在为一家公司面试时,我与某人结对编程,他向我展示了我需要熟悉的产品的大型代码库。以下是该项目的一些特点:

  1. 业务逻辑使用 Spring Framework (3.2),数据访问层使用 JPA。使用 Hibernate 的后端 MySQL,他们也使用 Project Lombok。
  2. 大约有 100 个 @Entities。他们使用 JSP 页面,混合了一些前端位。
  3. 统计显示,Java 类大约有 2000 个,代码由许多不同风格的用户开发。

总而言之,这是一个典型的,而不是一致开发的企业 Java 应用程序。

关于我:我是一名经验丰富的 Java 程序员,但我对 Spring/Java 没有太多经验。我确实非常了解 Web 应用程序,并且已经完成了相当多的 Rails 开发。

在某种程度上,接受这份工作可能是一种倒退。但我需要这份工作。所以,我有一个非常具体的问题。我应该如何处理它?我应该如何提出问题,了解问题的细节,以便有效地进行错误修复和功能开发?我见过this generic thread但我想了解具体细节(可操作的项目)w.r.t。这个环境(使用 Spring/JPA/Hibernate 进行 Java Web 开发)(尽管原则可能保持不变)。

【问题讨论】:

    标签: java spring enterprise


    【解决方案1】:

    答案在很大程度上取决于他们的架构。如果他们试图保持单线程、不可变的简单架构,那么你就是黄金。如果他们采用高度异步的事件驱动模型,那么您的生活将变得更加艰难,因为这些更难完全推理。就 Spring/JPA/Hibernate 而言,如果他们在域建模方面做得不错,那么 hibernate/jpa 部分基本上就无关紧要了。这就是 JPA/Hibernate 的重点,它应该抽象出几乎所有的主要细节,你应该处理看起来像 POJO 的事情。如果他们在这方面做得不好,那么你将有更多的工作。老实说,一旦您掌握了 Spring 的基础知识,通常很容易在程序中进行推理。

    我处理过的大部分春季事情通常都很容易想到。基本上你寻找自动装配(或任何他们用来注入他们的豆子)。这告诉你谁依赖谁。如果您了解 Springs 更复杂的功能(编织、AOP 等....)。事情变得更加困难,因为您必须非常清楚 Spring 何时实际执行代码。

    其他可能更复杂的领域是应用容器和 Spring 之间的交互。在不知道他们究竟使用什么以及如何使用它的情况下,我无法提供很多细节。

    TL;DR;如果他们设计得很好,并且避免了不必要的复杂性,那你就没事了。如果他们不这样做,您将花费大量时间来调试程序的实际流程以找出答案。从未见过摆脱这种情况的捷径。

    【讨论】:

    • 谢谢! 'up-vote' 需要 15 的声望!你会推荐好的资源来适应文件系统布局,其中的东西(DAO、实体、视图组件——jsp、javascript、css 等)? spring.io 是权威资源吗?
    猜你喜欢
    • 1970-01-01
    • 2014-04-22
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-02
    • 1970-01-01
    相关资源
    最近更新 更多