您现在的位置是:主页 > news > 网站域名.xin/辽宁好的百度seo公司

网站域名.xin/辽宁好的百度seo公司

admin2025/5/2 3:19:45news

简介网站域名.xin,辽宁好的百度seo公司,博客网站怎么做cpa,易经网站开发公司前面三篇随笔&#xff0c;已经完成了AOP的核心功能&#xff0c;但 代理对象的初始化还是有些麻烦&#xff0c;本文将解决该问题。 Demo 片段如下&#xff1a; public class HomeController : Controller{/// <summary>/// 使用 Autowired Attribute 自动初始化代理对象/…

网站域名.xin,辽宁好的百度seo公司,博客网站怎么做cpa,易经网站开发公司前面三篇随笔&#xff0c;已经完成了AOP的核心功能&#xff0c;但 代理对象的初始化还是有些麻烦&#xff0c;本文将解决该问题。 Demo 片段如下&#xff1a; public class HomeController : Controller{/// <summary>/// 使用 Autowired Attribute 自动初始化代理对象/…

 

前面三篇随笔,已经完成了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);// 当然 ServiceException 中的 Code属性也可以存储在 ServiceAbstract 对象中return View();}}

 

如上的代码片段中,myService 并未被赋值,而是被直接使用调用了Test方法。那么 该属性是什么时候被赋值的呢?

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

在 MVC框架中,Controller的激活是在 DefaultControllerFactory 中完成的,重写该类,并将其进行注册,便可实现,在激活Controller的同时也将自动初始化代理对象。

 

以下是、Global.asax 代码:

    // Note: For instructions on enabling IIS6 or IIS7 classic mode, // visit http://go.microsoft.com/?LinkId=9394801public 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.cnblogs.com/files/08shiyan/AOPDemo.zip

 

(自己实现简单的AOP 暂完、后续进行补充)

 

转载于:https://www.cnblogs.com/08shiyan/p/4905175.html