首页 > 代码库 > Spring.Net 简单入门学习
Spring.Net 简单入门学习
Spring.NET IoC容器的用法。
通过简单的例子学习Spring.Net
1、先创建一个控制台程序项目。
2、添加IUserInfoDal 接口。
namespace Spring.Net{ public interface IUserInfoDal { void Show(); }}
3、添加AdoNetUserInfoDal类和EFUserInfoDal类,继承IUserInfoDal接口。
AdoNetUserInfoDal.cs
public class AdoNetUserInfoDal:IUserInfoDal { public void Show() { Console.WriteLine("我是 AdoNet Dal ); } }
EFUserInfoDal.cs
public class EFUserInfoDal: IUserInfoDal { public void Show() { Console.WriteLine("我是EF Dal); } }
4、引用Spring.Net程序集 Spring.Core.dll 和 Common.Logging.dll
5、添加Spring.Net配置节点,配置object节点
<?xml version="1.0" encoding="utf-8" ?><configuration> <!--一定要在紧跟着configuration下面添加--> <configSections> <!--跟下面Spring.Net节点配置是一一对应关系--> <sectionGroup name="spring"> <section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/> <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" /> </sectionGroup> </configSections> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </startup> <!--Spring.Net节点配置--> <spring> <context> <!--容器配置--> <resource uri="config://spring/objects"/> </context> <objects xmlns="http://www.springframework.net"> <!--这里放容器里面的所有节点--> <description>An example that demonstrates simple IoC features.</description> <!--name 必须要唯一的,type=类的全名称,所在的程序集--> <object name="UserInfoDal" type="Spring.Net.EFUserInfoDal, Spring.Net"> </object> </spring></configuration>
6、开始写主函数,创建spring容器上下文
namespace Spring.Net{ class Program { static void Main(string[] args) { //控制权没有反转 //IUserInfoDal infoDal = new EFUserInfoDal(); //Spring.Net 创建实例的方式转为容器帮我们创建 //创建spring容器上下文 IApplicationContext ctx = ContextRegistry.GetContext(); //通过容器创建对象 IUserInfoDal efDal = ctx.GetObject("UserInfoDal") as IUserInfoDal; efDal.Show(); Console.ReadKey(); } }}
7、属性注入
<!--Spring.Net节点配置--> <spring> <context> <!--容器配置--> <resource uri="config://spring/objects"/> </context> <objects xmlns="http://www.springframework.net"> <!--这里放容器里面的所有节点--> <description>An example that demonstrates simple IoC features.</description> <!--name 必须要唯一的,type=类的全名称,所在的程序集--> <object name="UserInfoDal" type="Spring.Net.EFUserInfoDal, Spring.Net"> <property name="Name" value="张三"/> <!--ref指向下面的属性注入--> <property name="UserInfo" ref="UserInfo"/> </object> <!--属性注入--> <object name="UserInfo" type="Spring.Net.UserInfo, Spring.Net"> <property name="Name" value="李四"/> <property name="Age" value="15"/> </object> </objects> </spring>
8、构造函数注入
<!--构造函数注入--><object name="UserInfoDal2" type="Spring.Net.AdoNetUserInfoDal, Spring.Net"> <constructor-arg index="0" value="张三"/> <constructor-arg index="1" ref="UserInfo"/></object>
9、容器配置
<context> <!--容器配置--> <resource uri="config://spring/objects"/> <!--xml文件方式,更改属性,复制到输出目录:始终复制--> <!--<resource uri="file://objects.xml"/>--> <!--嵌入程序集方式,assembly://程序集名/项目名/objects.xml,更改属性,始终复制,生成操作,嵌入的资源--> <!--<resource uri="assembly://Spring.Net/Spring.Net/objects.xml"/>--></context>
10、完整例子
IUserInfoDal.cs
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Spring.Net{ public interface IUserInfoDal { UserInfo UserInfo { get; set; } string Name { get; set; } void Show(); }}
AdoNetUserInfoDal.cs
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Spring.Net{ public class AdoNetUserInfoDal:IUserInfoDal { public AdoNetUserInfoDal(string name, UserInfo userInfo) { Name = name; UserInfo = userInfo; } public UserInfo UserInfo { get; set; } public string Name { get; set; } public void Show() { Console.WriteLine("我是 AdoNet Dal ,属性注入:Name=" + Name); Console.WriteLine("UserInfo ,Name=" + UserInfo.Name + " Age=" + UserInfo.Age); } }}
EFUserInfoDal.cs
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Spring.Net{ public class EFUserInfoDal: IUserInfoDal { public EFUserInfoDal() { } public UserInfo UserInfo { get; set; } public string Name { get; set; } public void Show() { Console.WriteLine("我是EF Dal,属性注入:Name=" + Name); Console.WriteLine("UserInfo ,Name=" + UserInfo.Name + " Age=" + UserInfo.Age); } }}
App.config
<?xml version="1.0" encoding="utf-8" ?><configuration> <!--一定要在紧跟着configuration下面添加--> <configSections> <!--跟下面Spring.Net节点配置是一一对应关系--> <sectionGroup name="spring"> <section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/> <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" /> </sectionGroup> </configSections> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </startup> <!--Spring.Net节点配置--> <spring> <context> <!--容器配置--> <resource uri="config://spring/objects"/> <!--xml文件方式,更改属性,复制到输出目录:始终复制--> <!--<resource uri="file://objects.xml"/>--> <!--嵌入程序集方式,assembly://程序集名/项目名/objects.xml,更改属性,始终复制,生成操作,嵌入的资源--> <!--<resource uri="assembly://Spring.Net/Spring.Net/objects.xml"/>--> </context> <objects xmlns="http://www.springframework.net"> <!--这里放容器里面的所有节点--> <description>An example that demonstrates simple IoC features.</description> <!--name 必须要唯一的,type=类的全名称,所在的程序集--> <object name="UserInfoDal" type="Spring.Net.EFUserInfoDal, Spring.Net"> <property name="Name" value="张三"/> <!--ref指向下面的属性注入--> <property name="UserInfo" ref="UserInfo"/> </object> <!--构造函数注入--> <object name="UserInfoDal2" type="Spring.Net.AdoNetUserInfoDal, Spring.Net"> <constructor-arg index="0" value="张三"/> <constructor-arg index="1" ref="UserInfo"/> </object> <!--属性注入--> <object name="UserInfo" type="Spring.Net.UserInfo, Spring.Net"> <property name="Name" value="李四"/> <property name="Age" value="15"/> </object> </objects> </spring></configuration>
Program.cs
using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;//Spring.Aop.dll 面向切面编程//Spring.Core.dll spring框架基础//Common.Logging.dll 这个必须也要引用namespace Spring.Net{ class Program { static void Main(string[] args) { //控制权没有反转 //IUserInfoDal infoDal = new EFUserInfoDal(); //Spring.Net 创建实例的方式转为容器帮我们创建 //第一步,引用Spring.Net程序集 Spring.Core.dll 和 Common.Logging.dll //第二步,添加Spring.Net配置节点 //第三步,配置object节点 //第四步,创建spring容器上下文 IApplicationContext ctx = ContextRegistry.GetContext(); //第五步,通过容器创建对象 IUserInfoDal efDal = ctx.GetObject("UserInfoDal") as IUserInfoDal; efDal.Show(); IUserInfoDal adoDal = ctx.GetObject("UserInfoDal2") as IUserInfoDal; adoDal.Show(); Console.ReadKey(); } }}
Spring.Net 简单入门学习
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。