代理這裡主要用cglib代理,主要為實作前置通知,後置通知,環繞通知和異常通知 本篇主要承上啟下,承上根據ioc容易實作簡單aop代理, 啟下,對将要實作的web子產品做一個規劃 文章中多有代碼,會在第三部分web容器實作,列出參考文檔及github源碼位址
1.編寫工具類
2.實作aop
3.web實作規劃
抽象目的: 實作類隻需要繼承要,實作的方法,即可
主要邏輯
實作提供方法級代理,也就是對象不用執行個體化
對執行個體進行代理
代碼更有說服力,直接看注釋
實作方案
當ioc容器掃描所有被@smilecomonpent标記的元件時候,會判斷是否被@smileproxyaspect 注解修飾,
如果有@smileproxyaspect,則對執行個體化對象生成代理,注入
在對ioc容器及代理編寫完成後,就到重點我們要實作,對http請求的解析和處理. 在此實作,要對項目做一個規劃,打一個草稿
項目基于maven多子產品實作
groupid: org.smileframework.boot
artifactid:
org.smileframework.web
org.smileframework.tool
org.smileframework.data
org.smileframework.ioc
工欲善其事必先利其器,是以先寫我們将會遇到的工具類
生成代理部分 cglib代理 org.smileframework.tool.proxy
線程工廠及拒絕政策 org.smileframework.tool.threadpool
json及xml轉換 org.smileframework.tool.json | .xml
資料流工具類 org.smileframework.tool.io
類加載器器 org.smileframework.tool.clazz
檔案讀取工具 org.smileframework.tool.io.smileclasspathresource
從bean容器中擷取到extapplicationcontext
在掃描時候找到切面類,讀取裡面的class類型
擷取到這個注解,并擷取class類型,從bean容器中,擷取這個對象(a),根據smile的方法把這個a對象,進行代理.
定義webapplicationcontext 類實作extapplicationcontext上下文資訊擷取ioc容器,并掃描ioc擷取url綁定handler綁定的資訊
建立netty server端