Spring.net框架的简单使用(C#)

Spring.net的作用是解耦,不用new的方式获取类实例,通常用于三层架构的解耦

使用步骤:

1 新建控制台程序,名为:Spring.Net.Demo1,点中项目利用Nuget下载Spring.Core组件,参考:https://blog.csdn.net/zxy13826134783/article/details/85336968

2  打开App.config,编辑如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  
  <!--********************   新增加的,必须是第一个节点   ************************-->
  <configSections>
       <!--sectionGroup节点里面的内容是固定的,但这篇博客https://www.cnblogs.com/xiaoai123/p/6692966.html却说name属性是随意取得,我测试了并不能随便起-->
       <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>


  <spring>
       <context>
            <resource uri="config://spring/objects"/>
       </context>

       <objects xmlns="http://www.springframework.net">
           <!--object节点的name属性是可以自己取,在主程序就可以通过这个name属性获得实例对象,看主程序中的:context.GetObject("user") as User
               对于type类型中的Spring.Net.Demo1.User,Spring.Net.Demo1,其中Spring.Net.Demo1.User是 "要实例化的类名(User)所在的命名空间.要实例的类名(User)",
               而Spring.Net.Demo1是要实例化的类名(User)所在的命名空间
           -->
           <object name="user" type="Spring.Net.Demo1.User,Spring.Net.Demo1">
                 <!--两个property节点的name属性都必须对应User类中的两个属性-->
                 <property name="userName" value="张大个"></property>
                 <property name="userPassword" value="1688888"></property>
           </object>
         
           <!--如果需要再增加一个类的话,则再在object节点后面增加相同结构的object节点-->
       </objects>

  </spring>
  
  
  <!--*********************************   新增的结束     *******************************-->
  
  
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
    </startup>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Common.Logging" publicKeyToken="af08829b84f0328e" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-1.2.0.0" newVersion="1.2.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

3 新建一个测试类User,编辑如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Spring.Net.Demo1
{
    public class User
    {
        public string userName { set; get; }
        public string userPassword { set; get; }
    }
}

4  主程序编辑如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Spring.Context;
using Spring.Context.Support;

namespace Spring.Net.Demo1
{
    class Program
    {
        static void Main(string[] args)
        {
            //spring.net读取配置文件,获取上下文
            IApplicationContext context = ContextRegistry.GetContext();
            //从配置文件中读取name属性为user的对象实例,并向上转型为User实例
            User user = context.GetObject("user") as User;
            Console.WriteLine("userName:" + user.userName + "   userPassword:" + user.userPassword);

            Console.ReadKey();
        }
    }
}

6 运行结果如下图:

注意:当把程序拷贝到别的地方运行时,需要把Debug中的与Spring.net相关的3个dll库和与项目同名配置文件一起拷贝。

打开与项目同名的配置文件,发现跟App.config的内容是一模一样的,通过修改这个配置文件,可以实现不重新编译代码的情况下修改User类的属性值

发布了66 篇原创文章 · 获赞 48 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/zxy13826134783/article/details/85342354