国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

自己實現(xiàn)簡單的AOP(四)自動初始化代理對象

2019-11-14 15:45:36
字體:
供稿:網(wǎng)友

 

前面三篇隨筆,已經(jīng)完成了AOP的核心功能,但 代理對象的初始化還是有些麻煩,本文將解決該問題。

 

Demo 片段如下: 

    public class HomeController : Controller    {        /// <summary>        /// 使用 Autowired Attribute 自動初始化代理對象        /// </summary>        [Autowired]        public Service myService { get; set; }        public ActionResult Index()        {            myService.Test();            var msg = myService.ErrorMsg;            Console.WriteLine(msg);            // 當(dāng)然 ServiceException 中的 Code屬性也可以存儲在 ServiceAbstract 對象中            return View();        }    }

 

如上的代碼片段中,myService 并未被賦值,而是被直接使用調(diào)用了Test方法。那么 該屬性是什么時候被賦值的呢?

答案是:MVC框架、Controller激活的時候。

在 MVC框架中,Controller的激活是在 DefaultControllerFactory 中完成的,重寫該類,并將其進行注冊,便可實現(xiàn),在激活Controller的同時也將自動初始化代理對象。

 

以下是、Global.asax 代碼:

    // Note: For instructions on enabling IIS6 or IIS7 classic mode,     // visit http://go.microsoft.com/?LinkId=9394801    public class Mvcapplication : System.Web.HttpApplication    {        PRotected void Application_Start()        {            // 注冊新的Controller工廠            ControllerBuilder.Current.SetControllerFactory(new MyBatisControllerFactory());            AreaRegistration.RegisterAllAreas();            WebApiConfig.Register(GlobalConfiguration.Configuration);            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);            RouteConfig.RegisterRoutes(RouteTable.Routes);        }        private class MyBatisControllerFactory : DefaultControllerFactory        {            public override IController CreateController(RequestContext requestContext, string controllerName)            {                IController controller = base.CreateController(requestContext, controllerName);                /// 自動裝配屬性                /// <para>為屬性對象啟用代理,并延遲初始化被代理的對象</para>                DelayProxyUtil.AutowiredProperties(controller);                return controller;            }        }    }

 

源碼:http://files.VEVb.com/files/08shiyan/AOPDemo.zip

 

(自己實現(xiàn)簡單的AOP 暫完、后續(xù)進行補充)

 


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 永康市| 万源市| 张家港市| 林甸县| 上杭县| 运城市| 枣阳市| 平乡县| 阳谷县| 云阳县| 综艺| 莫力| 正定县| 翁牛特旗| 集安市| 台北县| 烟台市| 基隆市| 禹州市| 红安县| 泰来县| 白河县| 兴安县| 家居| 江都市| 宜良县| 北安市| 湾仔区| 凤庆县| 蒙自县| 江津市| 安化县| 鲁山县| 乌恰县| 墨竹工卡县| 浮山县| 和平县| 固安县| 邓州市| 洛川县| 甘南县|