Spring.Net功能:
1、控制反转(IOC):就是创建对象的权利由开发人员自己控制New,转到了有容器来控制
2、依赖注入(DI):就是通过容器来创建对象的时候,在对象初始化时给一些属性、构造方法的参数等注入默认值
3、面向切面编程(AOP)
mvc中最典型的AOP:过滤器
在MVC中应用Spring.Net:
1、引用相关dll
Common.Logging.dll是Spring.net内使用的日志记录文件
Spring.Core.dll是Spring.net的核心文件
Spring.Web.dll和Spring.Web.Extensions.dll是针对web的处理和扩展
Spring.Web.Mvc4.dll是针对mvc4做的扩展
2、在mvc项目的根目录下创建Config文件夹,并在文件夹下创建controller.xml文件
<?xml version="1.0" encoding="utf-8" ?> <objects xmlns="http://www.springframework.net"> <object name="UserInfoService" type="类所在的命名空间.类名, 类所在的程序集" singleton="false" > <property name="userInfoService" ref="userInfoService"/> </object> <object type="类所在的命名空间.类名, 程序集" singleton="false" name="userInfoService" > </object>
<!--intentionally do NOT register the AccountController or the ValuesController with the container; demonstrates that the underlying default controller factory will properly (attempt to!) resolve all controllers not registered with Spring.NET using its default controller resolution behavoir--> <!--<object type="Spring.Mvc4QuickStart.Controllers.AccountController, Spring.Mvc4QuickStart" singleton="false" />--> <!--<object type="Spring.Mvc4QuickStart.Controllers.ValuesController, Spring.Mvc4QuickStart" singleton="false" />--> </objects>
每个object都是一个类,type属性指定类所在的命名空间和程序集,属性singleton表示是否单例,object下的字节点property关联类下需要赋默认值的属性,name值与类中属性名相同,如何属性是另一个类,则property中则用ref关联,否则用value=“默认值”,每个property都对应类中的一个属性,多个具有默认值的属性就会有多个property。
3、配置web.config
原样写入
4、修改global文件
5、创建使用
IApplicationContext ctx = ContextRegistry.GetContext(); //创建容器. IUserInfoService lister = (IUserInfoService)ctx.GetObject("UserInfoService");//GetObject中传入的参数与配置文件中Object的name值对应
第5步中对象的创建交给容器,是控制反转IOC
配置文件中对属性进行默认值赋值是依赖注入
Spring.Net的AOP暂未用到,等以后使用后记录......