簡體   English   中英

了解相當大的Java Web App代碼庫

[英]Understanding a reasonably large Java Web App Codebase

在為一家公司進行面試時,我與一個為我展示了我將需要熟悉的產品的大型代碼庫的人配對編程。 以下是該項目的一些特征:

  1. 使用Spring Framework進行業務邏輯(3.2),該業務邏輯將JPA用於數據訪問層。 后端使用Hibernate的MySQL,他們還使用Project Lombok。
  2. 大約有100個@Entities。 他們使用JSP頁面,混合了一些前端位。
  3. 統計數據表明,大約有2000個Java類,並且該代碼是由許多不同風格的不同用戶開發的。

總而言之,它是一個典型的而不是一致開發的企業Java應用程序。

關於我:我是一位經驗豐富的Java程序員,但是我對Spring / Java沒有太多經驗。 我確實很了解Web應用程序,並且已經完成了一些Rails開發。

從某種意義上說,接受這項工作可能會向后退一步。 但是我需要這份工作。 因此,我有一個非常具體的問題。 我應該如何處理? 我應該如何提出問題,了解問題的詳細信息,以便在進行錯誤修復和功能開發時變得有效? 我已經看到了這個通用線程但是我想了解這種環境(帶有Spring / JPA / Hibernate的Java Web開發)的細節(可操作的項目) (盡管原理可能保持不變)。

答案很大程度上取決於它們的體系結構。 如果他們試圖保留一個單線程,不可更改的簡單體系結構,那么您將大開眼界。 如果他們采用了高度異步的事件驅動模型,那么您的生活將變得更加艱難,因為要完全推理這些事情將更加困難。 就Spring / JPA / Hibernate而言,如果他們在域建模方面做得不錯,那么hibernate / jpa部分基本上就不重要了。 這就是JPA / Hibernate的重點,它應該將幾乎所有主要細節都抽象掉,並且您應該處理類似於POJO的事情。 如果他們的工作做得不好,那么您將需要做更多的工作。 老實說,一旦您掌握了Spring的基礎知識,通常就很容易在程序中進行推理。

我處理的大多數春季內容通常都很容易想到。 基本上,您會尋找自動裝配線(或他們用來注入其bean的任何東西)。 這告訴您誰依賴誰。 如果您接觸到Springs更復雜的功能(編織,AOP等...)。 事情變得越來越困難,因為您必須非常了解Spring實際何時執行代碼。

其他可能更復雜的領域是應用容器和Spring之間的交互。 同樣,在不知道他們確切使用什么以及如何使用它們的情況下,我無法提供很多細節。

TL; DR; 如果他們設計得很好,並且不需要不必要的復雜性,那您就很好。 如果沒有,那么您將不得不花費大量時間來調試程序的實際流程以弄清楚它。 從來沒有見過這樣的捷徑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM