Cd Chen's Services

ba ba ba la~~

Spring Custom NamespaceHandler

自從接觸了 Spring 之後,發現他是一個很好玩的東西,尤其 IoC 與 AOP 的功能上,真的可以玩到半夜都睡不著覺!!

最近突發奇想,想要把 Domain Object (Model) 與 Service 透過 Annotation 綁的更緊一點,例如:

@EntityMeta(serviceClass = MyEntityService.class)
public class MyEntity implements IEntity<Long> {
  
   private Long id;

  // ...
}


public interface MyEntityService extends EntityService<MyEntity, Long> {

}

偶後就可以這樣搞:

MyEntityService service = EntityUtils.getEntityService(myEntity);
// ....

如果這樣做的話,就可把一些常用的功能抽離出來,而不用每個案子都在寫相同無趣的程式碼。

不過,要解決這個問題的話,必須要讓 Spring IoC Container 啟動時,能自動 Scan 我定義的 Annotation。我知道可以透過 ClassPathScanningCandidateComponentProvider 來實作,但這玩意的最大問題,他必須在 Spring Container 啟動後才能 Work,所以解決不了我的問題。

今日在想其他 Base on Spring 的 Module 怎麼實作的,後來想到可以透過 Spring 的設定檔中 Namespace 來解決這個問題。翻了一些資料後,發現了「Authoring Custom Namespaces in Spring 2.0」這篇文章,雖然有點久,但也蠻有參考的價值,所以先收錄下來以後再慢慢吸收。

反正,無聊咩!!

這篇內容的 Trackback 網址:

http://www.cdchen.idv.tw/trackback/1075