国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 新建县| 宁国市| 大丰市| 巴林左旗| 金秀| 巧家县| 盐山县| 武宣县| 南宫市| 鄂托克前旗| 临武县| 资源县| 错那县| 平陆县| 七台河市| 和平县| 蓝山县| 寻乌县| 商城县| 蒙城县| 舞钢市| 沧州市| 伽师县| 开江县| 亳州市| 绵竹市| 齐齐哈尔市| 汶上县| 循化| 中超| 湘阴县| 堆龙德庆县| 南阳市| 永福县| 黄石市| 辽阳县| 志丹县| 孝感市| 长顺县| 宿松县| 白玉县|