WebActivatorEx 注入时的使用

WebActivator类库提供了3种功能,允许分别在Application_Start初始化之前,之后以及ShutDown的时候,分别执行指定的代码,并且允许多次指定。示例如下:

[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(A.InitClass1), "PreStart")]
[assembly: WebActivatorEx.PostApplicationStartMethod(typeof(A.PostClass1), "PostStart")]
[assembly: WebActivatorEx.ApplicationShutdownMethod(typeof(A.ShutDownClass1), "ShutDown")]

下面提供一个项目中的使用示例:

using System.Linq;
using System.Web.Mvc;
using Microsoft.Practices.Unity.Mvc;

[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(TestPrj.Common.PreUnityActivator), "Start")]

namespace TestPrj.Common
{
    public static class PreUnityActivator
    {
        /// <summary>Integrates Unity when the application starts.</summary>
        public static void Start()
        {
            var container = UnityConfig.GetConfiguredContainer();

            FilterProviders.Providers.Remove(FilterProviders.Providers.OfType<FilterAttributeFilterProvider>().First());
            FilterProviders.Providers.Add(new UnityFilterAttributeFilterProvider(container));

            DependencyResolver.SetResolver(new UnityDependencyResolver(container));

            // if you want to use PerRequestLifetimeManager
            // Microsoft.Web.Infrastructure.DynamicModuleHelper.DynamicModuleUtility.RegisterModule(typeof(UnityPerRequestHttpModule));
        }
    }
}

using System;
using Microsoft.Practices.Unity;
using Microsoft.Practices.Unity.Configuration;

using TestPrj.DAL;
using TestPrj.Modules;

namespace TestPrj.Web
{
    /// <summary>
    /// Main container.
    /// </summary>
    public class UnityConfig
    {
        private static Lazy<IUnityContainer> container = new Lazy<IUnityContainer>(() =>
        {
            var container = new UnityContainer();
            RegisterTypes(container);
            return container;
        });

        public static IUnityContainer GetConfiguredContainer()
        {
            return container.Value;
        }

        public static void RegisterTypes(IUnityContainer container)
        {
            // NOTE: To load from web.config uncomment the line below. Make sure to add a Microsoft.Practices.Unity.Configuration to the using statements.
            // container.LoadConfiguration();

            // Register your types here
            container.RegisterType<IPreUnitOfWork, ETravelEntities>(new PerResolveLifetimeManager());

            // Register services.
            container.RegisterType<IConfigService, ConfigService>();
        }
    }
}

时间: 2024-11-29 06:52:52

WebActivatorEx 注入时的使用的相关文章

sql手工注入时的探测技巧汇总

工具的灵活性肯定比不上人,在手工探测的基础上再去自定义工具,才是正道. sql注入时手工探测技巧 ==================================================================================================== * 探测过滤了哪些字符 select|.|,|;|'|(|)|#|updatexml|from|where|if|limit|group|by|order|floor|sleep|rand|*|/*|

【Java】使用@Reource或@Autowire依赖注入时出现NPE的排查方法

首先想说明的是,@Resource和@Autowire虽然都是用于依赖注入的Annotation,但是二者是有区别的. 1 Resource不依赖于Spring,后者相反,因此为了减少以来,尽量使用Resource: 2 Resource是优先按照变量名称匹配的,也可用@Resource(name="")指定要注入的变量名.Autowire则是优先按类型匹配,配合@Qualifier也可指定变量名. 3 不存在灵异事件!不存在灵异事件!不存在灵异事件!重要的事说三遍.如果出现了Null

使用spring注入时出现is not writable or has an invalid setter method

在web-application-config.xml中定义 <bean id="employeeServiceDest" class="com.service.EmployeeServiceImpl">      <flex:remoting-destination />    <property name="EsysDao" ref="EsysDao"/> </bean> 结

使用spring注入时出现 XXX is not writable or has an invalid setter method

在applicationContext-redis.xml中定义 <bean id="jedisClientPool" class="cn.e3mall.common.jedis.JedisClientPool"> <property name="jedisPool" ref="jedisPool"></property> </bean> <bean id="je

PHP mysql注入时两条工具语句

http://***/include/web_content.php?id=589+and+(select+1)=1 这条语句是当mysql版本为4.0的时候用来判断是否支持子查询的,页面返回正确,说明支持子查询,否则不支持. 提交: http://***/include/web_content.php?id=589+and+(select+1+from+mysql.user+limit+0,1)=1 这条语句是用来判断mysql的当前登录账户是不是root的,如果页面返回正确,则为root,否

sqlmap注入总结

本实验是基于DVWA和sqli-labs的实验环境 实验平台搭建:下载Wamp集成环境,并下载DVWA和sqli-labs和压缩包解压至wamp\www的目录下.安装只要注意Wamp环境的数据库名和密码即可. sqlmap里涉及到的sql注入原理,请参考http://wt7315.blog.51cto.com/10319657/1828167,实验环境也是基于sqli-labs. sqlmap里涉及到的有关HTTP头,请参考http://wt7315.blog.51cto.com/1031965

Spring之IOC容器注入

上一篇做了IOC和AOP的原理介绍,这一篇主要讲解IOC的注入.不过我依然困惑一个问题: 一 : 依赖注入(DI)中有三种注入方式,那Spring中到底实现了几种方式?也是三种? IOC在很多框架中都有实现,并不是Spring特有的,之前说过IOC主要包含DL(Dependency Lookup)和DI(Dependency Injection),也就是说实现IOC的技术有很多,但是主要包含DI和DL,但是相对而言,DI应用范围比较广泛,我想这也是为什么Martin Fowler将控制反转用依赖

第二十七天 春之细雨润物于无形 —Spring的依赖注入

6月11日,晴."夏条绿已密,朱萼缀明鲜.炎炎日正午,灼灼火俱燃." IT人习惯把具体的事物加工成的形状一致的类,正是这样的一致,加上合适的规范,才能彰显对象筋道的牙感和bean清香的味道.Spring比谁都清楚OO的奥妙,让组件之间的依赖关系由容器在运行时期决定,称作依赖注入(Dependency Injection). 下面用一通俗的例子,一探依赖注入奥妙. 设计模式中的一个原则:针对接口编程,不要针对实现编程. 一.设计两个接口: (1)奶制品接口-MilkProductInte

什么是依赖注入

Spring 能有效地组织J2EE应用各层的对象.无论是控制层的Action对象,还是业务层的Service对象,还是持久层的DAO对象,都可在Spring的 管理下有机地协调.执行.Spring将各层的对象以松耦合的方式组织在一起,Action对象无须关心Service对象的详细实现,Service对 象无须关心持久层对象的详细实现,各层对象的调用全然面向接口.当系统须要重构时,代码的改写量将大大降低. 上面所说的一切都得宜于Spring的核心机制,依赖注入.依赖注入让bean与bean之间以