Java
Java Scan Classes in Packages...
以前若要掃描隸屬於某些 Package 的 Classes,非常的麻煩。很多人都喜歡用 Spring 來解決這個問題,但可能還是要類似這樣做:
MacOS X 10.7 (Lion) Java Swing 無法輸入中文
升級到 Lion 也一段時間了,一切都還好。唯一美中不足的是,在 Java Swing 下無法順利輸入中文,以及 Refresh 常常出錯的狀況。
記得很早以前,好像在 10.5 的年代裡,也遇過類似無法輸入中文的狀況。後來在某一個版本的 JDK/JRE 後,這個問題就順利解決了。不過,到了 10.7 這個老問題卻又再度出現。
爬了文章,發現了「是时候放弃swing了」這篇文章,裡面提到這是 Swing 的 Bug。目前最簡單的解決方法,就是在開啟 Java Swing 應用程式前,先把中文輸入法打開,這樣就正常了。經過試驗,真的有效!!
幾篇與 Hibernate "no session or session was closed" 有關的文章
最近常搞 Jpa/Hibernate,但常發現如下的錯誤訊息:
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: myerstone.dilas.core.entities.School.semesters, no session or session was closed
查過一些文獻後,將相關有用的參考資料整理於下,作為以後參考的依據:
How to implement polymorphic JPA entities with generic relations
以前玩 Django 時,非常喜歡其 ContentType 的機制,可以讓我非常愉悅的儲存各種不同型態的資料之間的關係。然而換用 JPA 後,卻大大的失去這樣的樂趣,因為 Java 是一個強型別的程式語言,若型態不多,是無法順利進行對應。
今天在找資料的時候,看到了「How to implement polymorphic JPA entities with generic relations」這篇文章,提到了一些可能的解決方案。改天可以來試試看!!
Java 鬆綁 (三):利用 ServiceLoader 實作動態載入
在前兩篇文章中,我們看到了如何利用 Java 多型的技巧,鬆綁類別之間的關係;也看到如何透過動態載入的技巧,來鬆綁 Package。不過還不是很完美,至少我是這樣認為。
在「Java 鬆綁 (二):利用 Package 與動態載入徹底鬆綁」這篇文章中,係利用 Class.forName()
這個古老的方法來實作動態載入的功能,個人覺得非常的麻煩且缺乏彈性。比較理想的作法,係利用 Java EE 或者 SpingFramework 提供的 CDI (Contexts & Dependency Injection) 來實作這樣的要求。
不過 Java EE 容器雖然是 Java 世界中的標準,但重量級的執行環境,對於一個小的專案來說,非常的不值得;而 SpingFramework 雖然夠輕量化 (但近期的發展也趨向於重量),但卻不是標準的作法,實作與部署時必須考慮執行的環境中是否提供所需的條件。
Java 鬆綁 (一):利用多型鬆綁類別的依賴關係
在學習 OO 的過程中,很多前輩先進都會強調「鬆綁」的原則。所謂的鬆綁,就是把元件與元件之間依賴關係降到最低。鬆綁之後可以讓我們未來維護與擴充功能時,能夠更加的方便。為達成鬆綁原則,會充分利用 OOP 語言本身提供的機制來實作之,以 Java 為例,我們會利用多型來完成鬆綁的效果。
例如:我需要寫一個打招呼的程式,沒有考慮鬆綁原則時,可以這樣寫:
package org.cdchen.serviceloaders.apps; public class SayHelloMain { public static void main(String[] args) { System.out.println("Hello to cdchen."); } }
這樣的寫法非常的直接與單純,但卻產生了一個問題:如果以後要改用其他方式打招呼,就得重新修改程式,並且重新編譯才行。為此,我們可以考慮這樣做:
Eclipse Dynamic Web Project 使用 Maven
最近在玩 Maven2,覺得蠻有意思的。若用 Eclipse 開發 Dynamic Web Project 時,要讓專案支援 Maven,通常方法有兩種:
- Maven to Eclipse Dynamic Web Project
- Eclipse Dynamic Web Project to Maven
Maven to Eclipse Dynamic Web Project
這種方法是先使用 Maven 產生專案的目錄,再透過 eclipse 這個 Maven Plugin 來轉成 Eclipse Dynamic Web Project。步驟如下: