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

vs2015 C# 控制台简单SpringDEMO相关推荐

  1. 浏览器控制台简单测试websocket接口收发

    浏览器控制台简单测试websocket接口收发 打开一个网页 F12打开控制台 ws = new WebSocket('ws://121.40.165.18:8800'); 或者 ws = new W ...

  2. JDBC中用控制台简单对数据库进行增删改查操作(IDEA.2023)

    文章目录 前言 一.首先是每个操作共用的操作大纲 1.注册驱动 2.创建连接 3.编写SQL语句结果,动态值的部分使用?代替 4.创建prepareStatement,并且传入SQL语句的结果 5.占 ...

  3. C++控制台简单的用户登录

    # 头文件 #include "stdafx.h"using namespace std;class UserLogin { public:UserLogin();~UserLog ...

  4. C#---百度图像识别SDK的控制台简单应用;

    (刚刚转C#,一个项目用到,就分享出来,第一次写博客,有不足之处还请指正,某些编写方式只是习惯使然) 1.首先,在百度AI平台进行注册登录:百度AI 2.然后点开右上角的控制台,找到图像识别,创建应用 ...

  5. C#控制台简单魔塔小游戏

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  6. VS2015可以运行opencv库,但不出图片。

    1.将VS的运行环境改为x64的(5个openCV库的运行需求),添加引用前四个dll后,分别在相应文件Console_text001\Console_text001\bin的Debug和x64里放入 ...

  7. Chrome 控制台的console用法收集

    Chrome 控制台console的用法 大家都有用过各种类型的浏览器,每种浏览器都有自己的特色,本人拙见,在我用过的浏览器当中,我是最喜欢Chrome的,因为它对于调试脚本及前端设计调试都有它比其它 ...

  8. VS2015的下载及安装

    第一步,VS2015 Community版本的下载,此版本注册后是免费使用的,其他版本需要激活,但是安装步骤都是相同的.VS2015 Community下载网址:http://download.mic ...

  9. Chrome的控制台(Console)的用法(超详细,还未细看)

    为什么写了本篇博客: (1)在Chrome浏览器开发者工具介绍:(包括,Network面板介绍,XHR等等)中,遇到了Chrome的控制台(Console):本篇博客就是详细介绍Console的. 本 ...

最新文章

  1. Android 正则表达式实例
  2. android自定义水波纹,Android自定义View——实现水波纹效果类似剩余流量球(示例代码)...
  3. 对象存储/编码/解码
  4. 脚本重启nginx进程
  5. saltstack (6) 配置管理(2)
  6. 05.full_text match_bool_prefix match_phrase_prefix 查询
  7. SharePoint 2013开发入门探索(二)- 列表操作
  8. QD75D416轴PLC控制伺服电机16轴完整案例
  9. 坚果nuts 加速 官网_坚果 R2 发布:骁龙 865、1 亿像素、双曲面屏,售价 4499 元...
  10. 计算机上什么键有存储,计算器存储运算键是什么?
  11. NLP(四十二)人物关系分类的再次尝试
  12. Fabric2.3分布式部署
  13. 云函数+微信公众号到个人微信
  14. Java入门基础.1
  15. java捕获唯一约束异常_java – 捕获JPA上唯一约束的原因
  16. HIT2372 Recoup Traveling Expenses(最长单调子序列)
  17. 明星志愿3 服务器维护,【明星志愿3】【攻略】训练、打工以及证书
  18. pygame 键盘事件
  19. 极点五笔/xshell远程/桌面or命令启动/配制打印机/
  20. 常见建站安装软件教程 好东西

热门文章

  1. 【kettle抽取Orecle/Mysql数据至HDFS】诸如‘\u0001’等特殊分隔符表示法
  2. 无法向虚拟机中拷贝文件解决办法
  3. 深度linux打不开了,深度社区严重打不开
  4. git+github+jenkins自动发布
  5. AI反腐:细查24万份合同,牵出千亿违规采购
  6. 关于Windows-Linux双系统的启动引导
  7. Pdf 插入图片 | 指定位置插入图片 不改变原格式 直接操作 pdf
  8. 打官司除了找律师,还能找谁?
  9. 使用python爬取google翻译的语音
  10. JavaScript---网络编程(8)-DHTML技术演示(1)