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下載












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