vs2015 C# 控制台简单SpringDEMO

用的是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下载












發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章