2023年11月27日 星期一

Java interface instance

下午部門另外一個主管問了我一個問題,是關於 Java interface instance,我們在一個 open source 的專案中看到一個 Java interface,但卻找不到那個實體位在哪裡?

因為我不是寫 Java 的,故我一時也看不出來!

但我覺得應該是 Spring Boot 自動產生的或是在這個框架中被自動注入的,明天來問我同學部門的人好了,我想對他來說應該是很簡單的。

2023/11/28 更新

他也沒用過 Spring Boot,但跟我的想法一樣,應該要有 xml 或什麼設定檔可以看到才對,但似乎不是這樣,感覺 Spring Boot 處理掉了?

本想直接 register,但似乎要有指紋辨識器且目前只有 Ubuntu 的 Firefox 可以支援,至少我的手機跟桌機都會報錯 Error: ReferenceError: PublicKeyCredential is not defined。

試著直接將 object 印出來再重包 docker image 測試,是自動產生(注入)的沒錯?


有些東西沒有碰過就是不知道,這是我這次最大的感想XD


後記


從上面網頁可以知道使用 @Entity 表示要用 JPA,而 JPA implementation 就是 SimpleJpaRepository。

2023/11/29 更新

昨天下午回信做了些補充,之後便是看了前面那個網頁,雖然不到整條線串起來,但一定是比前天下午多懂了一些XD

本想繼續回信再做些補充,但畢竟不是寫 Java 的,況且寫 Java 的人也不一定會碰 Spring,故就不班門弄斧了。

將一些關鍵字留在這裡好了。

01. Spring 是一套 full-stack 框架,需要一些 XML 檔幫助設定,Spring Boot 是基於 Spring 開發,目的是快速搭建一套 Spring 應用程式,故不再需要 XML 而可以直接使用 Java 組態(Annotation)。

02. 資料庫連接最早是使用 JDBC 來操作資料庫,只要有各家 DB JDBC driver,便不用煩惱如何使用不同的資料庫,但因為要自己處理連接等操作,故後期便使用 ORM 框架來處理資料物件與資料庫之間的對映,Hibernate 就是一個 ORM 框架。

又因為建立資料庫連線很花資源,故想要像 Thread Pool 一樣可以重複使用,便有了 Connection Pool 的概念,Hikari CP 便是其中一套很出色的第三方套件。

03. Spring JPA 中,Entity 和 Repository 是成套的,故只要 interface method 名字與參數有符合規範,Spring 框架就可以自動長出這些實作,甚至要用 AND、OR 條件都沒問題。

2023/12/01 更新

此專案用到 Lombok 函式庫,他會自動在編譯時期幫你補上 getter、setter 的實作。

沒有留言:

張貼留言