天天看點

日常心得 2016-10-20

spring+maven跨子產品引用類

maven項目以子產品開發時,如果core子產品被web子產品引用,但是某些類是放在web子產品中的,又想要在core子產品中使用。

可以通過接口的方式解決。

在core中定義一個接口以提供相應的功能。

由于項目使用spring管理,在web中實作這個類并由spring管理bean,在真實使用時會自動注入,可以實作引用。都是在一個項目中,隻是在開發過程中不在一起無法引用,運作态即可引用。

2016-10-17

中間件應該提供的是工具,和具體業務無關,自動化處理内部過程,不提供對接業務功能。如果跟業務耦合,自然會死掉。

按接口程式設計,對接外部服務時,使用接口方式,内部實作類用擴充卡模式去對接,避免服務切換時修改業務代碼,隻需要修改擴充卡子產品。這樣可以降低以後不使用這個服務,而使用其它服務時,切換服務的成本。

提供給外部使用的方法,如果是工具類别的,最好是靜态方法,友善使用。

如果需要把一個變量儲存到靜态類中,可以在構造函數中set到靜态類中,而不需要反向擷取。

spring bean定義XML配置優先于注解,但是注入方面,注解優先于XML配置

2016-10-20

quartz 的定時機制,會在加入新的job時觸發事件,會直接計算出下一次的執行時間,然後所有的job加入到一個tree中,進行排序,每次都會acquire到第一個,然後觸發,用工作線程執行,再取下一個。如果取到的還沒有到時間,大于2ms,則會計算出一個間隔時間,然後使用鎖去wait(millisecond),鎖隻是一個普通的 new Object(),wait到時間後或者外部notifyAll()後(這是因為新加或者其它排程器變動而觸發的事件)會繼續執行。核心都在QuartzSchedulerThread。