zoukankan      html  css  js  c++  java
  • Spring.Net学习笔记(1)-容器的使用

    一、下载地址:

    http://www.springframework.net/download.html

    二、相关程序集

    Spring.Net容器定义在程序集Spring.Core.dll中,它依赖于Common.Logging.dll。该程序集位于

    Spring.NET-1.3.1Spring.NETin et4.0 elease目录下

    三、创建容器

    1.编程方式的容器

    使用Spring.Context.Support.StaticApplicationContxt直接创建容器

    public class Person
        {
            public string Name { get; set; }
            public override string ToString()
            {
                return "This is Person";
            }
        }
    class Program
    {
        static void Main(string[] args)
        {
            //创建容器
            Spring.Context.Support.StaticApplicationContext context = new StaticApplicationContext();
    
            //注册Person类
            context.RegisterPrototype("Person", typeof(Person), null);
    
            //从容器中获取Person对象
            Person person = context.GetObject("Person") as Person;
    
            Console.WriteLine(person);
        }
    }

    2.使用xml方式(注意xml的输出方式)

    处理xml的配置处理器:Spring.Context.Support.XmlApplicationContext

    <?xml version="1.0" encoding="utf-8" ?>
    <objects xmlns="http://www.springframework.net">
      <object id="Person" type="CPrj.Person,Cprj"></object>
    </objects>
    class Program
    {
        static void Main(string[] args)
        {
            Spring.Context.Support.XmlApplicationContext context = new XmlApplicationContext("objects.xml");
            Person person = context.GetObject("Person") as Person;
            Console.WriteLine(person); 
        }
    }

    注:<object>的父节点必须是<objects>,且objects的xmlns元素是必须的

    3.使用配置文件+xml文件

    处理器Spring.Context.Support.ContextHandler在启动程序时候加载配置信息

    <?xml version="1.0" encoding="utf-8" ?>
    <objects xmlns="http://www.springframework.net">
      <object id="Person" type="CPrj.Person,Cprj"></object>
    </objects>
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    
      <configSections>
        <sectionGroup name="spring">
          <section name="context" type="Spring.Context.Support.ContextHandler,Spring.Core"></section>
        </sectionGroup>
      </configSections>
    
      <spring>
        <context>
          <resource uri="file://objects.xml"></resource>
        </context>
      </spring>
    
      <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
      </startup>
    </configuration>
    class Program
    {
        static void Main(string[] args)
        {
            Spring.Context.IApplicationContext context = Spring.Context.Support.ContextRegistry.GetContext();
            Person person = context.GetObject("Person") as Person;
            Console.WriteLine(person);
        }
    }

    注:context节点的默认type就是 Spring.Context.Support.XmlApplicationContext,Spring.Core 。故可省去

    <spring>
      <context type="Spring.Context.Support.XmlApplicationContext,Spring.Core">
        <resource uri="file://objects.xml"></resource>
      </context>
    </spring>

    4.使用配置文件

    xml对象定义也可以放在DotNet的标准应用程序配置文件中,此时必须为<objects>节点预先注册相应的节点处理器

    需要使用一个新的配置处理器:Spring.Context.Support.DefaultSectionHandler

    它可以帮助我们解析spring配置信息

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    
      <configSections>
        <sectionGroup name="spring">
          <section name="context" type="Spring.Context.Support.ContextHandler,Spring.Core"></section>
          <section name="objects" type="Spring.Context.Support.DefaultSectionHandler,Spring.Core"/>
        </sectionGroup>
      </configSections>
    
      <spring>
        <context>
          <resource uri="config://spring/objects"></resource>
        </context>
        <objects xmlns="http://www.springframework.net">
          <object id="Person" type="CPrj.Person,CPrj"></object>
        </objects>
      </spring>
    
      <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
      </startup>
    </configuration>
    class Program
    {
        static void Main(string[] args)
        {
            Spring.Context.IApplicationContext context = Spring.Context.Support.ContextRegistry.GetContext();
            Person person = context.GetObject("Person") as Person;
            Console.WriteLine(person);
            Console.ReadKey();
        }
    }

    注:spring和context节点名称不是任意的,必须是spring和context。Spring.Net本身将“spring/context”作为字符串常亮定义在AbstractApplicationContext类中以表示上下文的节点名称

    image

    5.混合使用外部配置文件和嵌入的配置

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        <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>
    
        <spring>
            <context>
                <resource uri="file://objects.xml"/>
                <resource uri="config://spring/objects"/>
            </context>
            <objects>
                <object id="Person" type="CPrj.Person,CPrj"></object>
            </objects>
        </spring>
        
    </configuration>

    四、参考文章

    http://www.cnblogs.com/haogj/archive/2011/06/10/2077540.html

    更多精彩内容请看:http://www.cnblogs.com/2star
  • 相关阅读:
    springcloud 项目源码 微服务 分布式 Activiti6 工作流 vue.js html 跨域 前后分离
    springcloud 项目源码 微服务 分布式 Activiti6 工作流 vue.js html 跨域 前后分离
    OA办公系统 Springboot Activiti6 工作流 集成代码生成器 vue.js 前后分离 跨域
    java企业官网源码 自适应响应式 freemarker 静态引擎 SSM 框架
    java OA办公系统源码 Springboot Activiti工作流 vue.js 前后分离 集成代码生成器
    springcloud 项目源码 微服务 分布式 Activiti6 工作流 vue.js html 跨域 前后分离
    java 视频播放 弹幕技术 视频弹幕 视频截图 springmvc mybatis SSM
    最后阶段总结
    第二阶段学习总结
    第一阶段学习总结
  • 原文地址:https://www.cnblogs.com/kimisme/p/5205628.html
Copyright © 2011-2022 走看看