Spring.net学习记录

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暂未用到,等以后使用后记录......

原文地址:https://www.cnblogs.com/zhhwDavidblog/p/7953616.html