用的是VS2015
本教程适合想简单使用用Spring的菜鸟,但又不是很懂Spring是啥意思,是否适合使用
打开VS,新建一个控制台应用程序项目 (文件-新建-项目-模板-Visual C#-控制台应用程序)
打开Nuget,搜索 spring.core 安装spring
新建接口 ITextSpring.cs 增加一个 void Show() 方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SpringDemo
{
interface ITextSpring
{
void Show();
}
}
新建三个类
XMLTextSpring
AssemblyTextSpring
FileTextSpring
都继承
ITextSpring 然后重写方法,代码如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SpringDemo
{
class baseTextSpring
{
public string PropStr { get; set; }
}
class XMLTextSpring : baseTextSpring, ITextSpring
{
public void Show()
{
Console.WriteLine("通过自身config文件配置调用");
Console.WriteLine("XMLTextSpring的Prop属性是:" + PropStr);
}
}
class AssemblyTextSpring : baseTextSpring, ITextSpring
{
public void Show()
{
Console.WriteLine("通过XML嵌入文件配置调用");
Console.WriteLine("AssemblyTextSpring的Prop属性是:" + PropStr);
}
}
class FileTextSpring : baseTextSpring, ITextSpring
{
public void Show()
{
Console.WriteLine("通过XML外部文件配置调用");
Console.WriteLine("FileTextSpring的Prop属性是:" + PropStr);
}
}
}
以上 准备工作完成,下面开始进入正题
在Program.cs的主程序里获取上下文,首先要引用命名空间
using Spring.Context;
using Spring.Context.Support;
然后获取容器
IApplicationContext context = ContextRegistry.GetContext();
使用容器获取类
ITextSpring XML = context.GetObject("XMLTextSpring") as ITextSpring;
ITextSpring assembly = context.GetObject("AssemblyTextSpring") as ITextSpring;
ITextSpring file = context.GetObject("FileTextSpring") as ITextSpring;
测试
XML.Show();
assembly.Show();
file.Show();
好处就在于不需要new一个类,不管你那三个类怎么变,主程序里都不需要修改,代码如下
using Spring.Context;
using Spring.Context.Support;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SpringDemo
{
class Program
{
static void Main(string[] args)
{
///获取容器
IApplicationContext context = ContextRegistry.GetContext();
///创建类
ITextSpring XML = context.GetObject("XMLTextSpring") as ITextSpring;
ITextSpring assembly = context.GetObject("AssemblyTextSpring") as ITextSpring;
ITextSpring file = context.GetObject("FileTextSpring") as ITextSpring;
///使用方法
XML.Show();
assembly.Show();
file.Show();
Console.ReadLine();
}
}
}
此时如果运行是会报错的
原因是还没有进行配置,如果配置呢,这里介绍的是三种简单的配置
首先打开App.config文件 在configuration下增加如下代码,意思是告诉程序这增加一个section 名为spring
<configSections>
<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>
然后在下面添加srping节点
<spring>
<!--Spring.Net对象容器的配置-->
<context>
<!--容器里面的所有的对象在哪里配置的?-->
<!--在项目下面的xml.xml文件里配置-->
<resource uri="file://TextFile.xml"/>
<!--在项目下面的 assembly.xml文件里配置-->
<resource uri="assembly://SpringDemo/SpringDemo/assembly.xml"/>
<!--在本配置文件后面配置-->
<resource uri="config://spring/objects"/>
</context>
<!--objects:配置的容器的里面的对象的-->
<objects xmlns="http://www.springframework.net">
<description>这是描述</description>
<!--前面是命名空间 后面是程序集-->
<object name="XMLTextSpring" type="SpringDemo.XMLTextSpring, SpringDemo">
<property name="PropStr" value="App.config文件"/>
</object>
</objects>
</spring>
xml.xml表示在项目下有个xml.xml文件,里面配置相关参数, file://表示运行时exe程序所在目录
assembly://SpringNetDemo/SpringNetDemo/assembly.xml
第一个SpringNetDemo表示项目名称
第二个SpringNetDemo表示程序集名称
assembly.xml表示嵌入程序里的文件
config://spring/objects表示后续有个 objects节点配置
xml.xml如下
<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.net
http://www.springframework.net/xsd/spring-objects.xsd">
<object name="FileTextSpring" type="SpringDemo.FileTextSpring, SpringDemo">
<property name="PropStr" value="TextSpring.xml文件"/>
</object>
</objects>
assembly.xml如下
<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.net
http://www.springframework.net/xsd/spring-objects.xsd">
<object name="AssemblyTextSpring" type="SpringDemo.AssemblyTextSpring, SpringDemo">
<property name="PropStr" value="assembly.xml文件"/>
</object>
</objects>
此时运行还是会出错,那是因为xml.xml没有生成到程序目录文件下
再运行,还是会报错,那是因为assembly.xml没有嵌入程序里
好了, 运行效果如下
这样的话,我们只需要修改xml配置文件里的参数,就能使程序输出完全不同,简单来说其实就是抽象工厂,只是spring更新灵活方便,spring还有很多其它很有用的功能,大家自行上官网查看
代码下载地址
CSDM下载