天天看點

跟我動手搭架構二之AOP實作

代理這裡主要用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端