刚学习spring.net ,先了解俩个概念
IOC:我们之前创建一个对象的时候,基本是这样 UserInfo user=new UserInfo();
在引入IOC这个容器之后,我们就可以这样创建了
//第一步 初始化容器
IApplicationContext ctx = ContextRegistry.GetContext();
//第二步 创建对象
<span style="font-size:14px;color:#333399;">UserInfo user</span> = ctx.GetObject("UserInfoDal1") as IUserInfoDal;
这里的("UserInfoDal1"),是我们在配置文件中设置的
我们首先要在<configSections>节点中这样配置个节点
<!--Spring.Net块配置-->
<sectionGroup name="spring">
<section name="context" type="Spring.Context.Support.MvcContextHandler, Spring.Web.Mvc4"/>
</sectionGroup>
然后在<configuration>中这样配置个节点
<!--Spring.Net 的容器的配置节点-->
<spring>
<context>
<resource uri="file://~/Config/dals.xml"/>
</context>
</spring>
最后在dals.xml中这样配置
<object name="UserInfoDal" type="Company.OA.EFDAL.UserInfoDal, Company.OA.EFDAL" singleton="false" >
</object>
Company.OA.EFDAL.UserInfoDal这是一个要实例化的类的全名称,即包含命名空间;Company.OA.EFDAL是这个类所在的程序集
DI:容器在创建对象的时候,读取配置文件,然后给对象赋默认值,这就叫DI注入
<object name="UserInfoDal1" type="SpringNetDemo.UserInfoDal, SpringNetDemo">
<constructor-arg index="0" value="张三"/>
</object>
我们给下面的构造函数
public class UserInfoDal :IUserInfoDal
{
public UserInfoDal(string name)
{
Name = name;
}
}
默认了name值为张三
还可以属性注入
<object name="UserInfoDal" type="SpringNetDemo.EFUserInfoDal, SpringNetDemo">
<property name="Name" value="李四"/>
</object>
默认类中的Name属性值为李四
差点忘了,使用sping.net时,我们的globel文件的实现接口要改成public class MvcApplication : Spring.Web.Mvc.SpringMvcApplication //System.Web.HttpApplication
spring.net,是个复杂的抽象工厂,用起来性能差点,但是比抽象工厂更加的灵活