摘要: 在結束了上一篇Spring 1.x中AOP的使用之后,我用馬不停蹄的打開Eclipse,做著Spring2.X下了AOP的Sample。在上一篇文章中的配置過程中,由于對自動代理不是很熟,出現了循環引用的異常信息。當初在閱讀PicoContainer源碼時看到循環引用不以為然,后來在學習AspectJ時小有印象,這次在折騰了半個多小時后可加深了印象。 閱讀全文
Framework
摘要: 本文通過一個“Hello World”級別的橫切性功能介紹Spring1.X中AOP的使用,并結合Spring的經典的聲明式事務管理給出Spring AOP配置中的經典方案。在Spring2出來以后,Spring1.X的AOP使用方式已經“不合時宜”了,因此如果你是在新項目中采用Spring AOP,建議使用Spring2中的AOP使用方式。關于Spring2.X中AOP的使用,參考該文的姊妹文章Spring2.X中AOP的使用。
一提到AOP的應用,人們就會本能地提起日志功能,它就像一門語言的“Hello World”一樣被人們無數次提起。也許有人會疑問除了“不實用”的日志功能,AOP還能做些什么?可能在很多時候我們并不需要自己實現一個AOP功能,尤其是在擁有了很多優秀的AOP應用框架來解決通用的橫切性問題的情況下(比如Spring的事務管理、比如Acegi的安全管理、比如WebWork的攔截功能)。但問題總是層出不窮的,總會有些問題可能需要我們自己AOP一下。 閱讀全文
一提到AOP的應用,人們就會本能地提起日志功能,它就像一門語言的“Hello World”一樣被人們無數次提起。也許有人會疑問除了“不實用”的日志功能,AOP還能做些什么?可能在很多時候我們并不需要自己實現一個AOP功能,尤其是在擁有了很多優秀的AOP應用框架來解決通用的橫切性問題的情況下(比如Spring的事務管理、比如Acegi的安全管理、比如WebWork的攔截功能)。但問題總是層出不窮的,總會有些問題可能需要我們自己AOP一下。 閱讀全文
摘要: Hibernate提供客戶化映射類型接口,使用戶能以編程方式創建自定義的映射類型來將持久化類任意類型的屬性映射到數據庫中。使用客戶化映射類型,需要實現org.hibernate.usertype.UserType接口。這是個強大的功能,也是Hibernate的最佳實踐之一。我們經常提到 ORM中很困難的一點便是O的屬性和R的屬性不能一一映射,而Hibernate提供的UserType無疑給出了一個很好的解決方案。本文給出使用客戶化映射類型的兩個例子,算是對Hibernate初學者的拋磚。 閱讀全文
摘要: Hibernate的檢索策略包括類級別檢索策略和關聯級別檢索策略。
類級別檢索策略有立即檢索和延遲檢索,默認的檢索策略是立即檢索。在Hibernate映射文件中,通過在上配置lazy屬性來確定檢索策略。對于Session的檢索方式,類級別檢索策略僅適用于load方法;也就說,對于get、qurey檢索,持久化對象都會被立即加載而不管lazy是false還是true。一般來說,我們檢索對象就是要訪問它,因此立即檢索是通常的選擇。由于load方法在檢索不到對象時會拋出異常(立即檢索的情況下),因此我個人并不建議使用load檢索;而由于中的lazy屬性還影響到多對一及一對一的檢索策略,因此使用load方法就更沒必要了。
關聯級別檢索策略有立即檢索、延遲檢索和迫切左外連接檢索。對于關聯級別檢索,又可分為一對多和多對多、多對一和一對一兩種情況討論。 閱讀全文
類級別檢索策略有立即檢索和延遲檢索,默認的檢索策略是立即檢索。在Hibernate映射文件中,通過在
關聯級別檢索策略有立即檢索、延遲檢索和迫切左外連接檢索。對于關聯級別檢索,又可分為一對多和多對多、多對一和一對一兩種情況討論。 閱讀全文
摘要: JDK內建的任務調度工具類有Timer和TimerTask類,對于簡單的任務調度,JDK的Timer就能夠勝任。一般來說,Timer應該隨程序啟動后一直運行。如果是web程序,可以通過listener加載Timer實例。對于普通的應用程序,需要將Timer設置成非后臺線程才行。 閱讀全文
摘要: 本文主要介紹如何使用簡單的Spring郵件抽象層來實現郵件發送功能,對于JavaMail中的API并不做介紹。通過對比JavaMail的API和Spring的郵件抽象層,我覺得,Spring的郵件抽象層優點就是簡化了代碼量,并能充分利用IOC功能;缺點就是要使用部分Spring API,使程序與第三方框架耦合。關于這方面的內容,可以參考Spring的參考手冊。 閱讀全文