配置 Spring.NET

im, 无色
im, 无色
im, 无色
919
文章
0
评论
2019年8月1日21:43:22 评论 1,657
作为一个容器,当然首先要存在一个容器对象了。Spring.NET 中的容器定义在程序集 Spring.Core 中,直接添加这个程序集的引用就可以开始使用了。这个程序集位于 Spring.NET-1.3.1\Spring.NET\bin\net\4.0\release 中。

 

一、编程方式的容器

 

在 Spring.NET 中,对于通过编程方式使用容器的环境,提供了 Spring.Context.Support.StaticApplicationContext,我们可以直接创建这个容器,并加入一些配置。
在下面的例子中,我们定义了基类 Person,然后定义了 Person 的派生类 Student
public class Person
{
    public string Name { set; get; }
 
    public override string ToString()
    {
        return "This is Person.";
    }
}
 
public class Student
    :Person
{
    public string School { set; get; }
 
    public override string ToString()
    {
        return "This is Student.";
    }
}
 
class Program
{
    static void Main(string[] args)
    {
        // 创建容器
        Spring.Context.Support.StaticApplicationContext context
            = new Spring.Context.Support.StaticApplicationContext();
             
        // 注册
        context.RegisterPrototype("Person", typeof(Student), null);
         
        // 注册一个单例类型
        context.RegisterSingleton("Alice", typeof(Person), null);
 
        Person person = context.GetObject("Person") as Person;
 
        Console.WriteLine(person);
    }
}

 

二、Xml 方式容器

 

在开发中,我们通常通过 XML 配置文件来完成配置。Spring.NET 提供了 Spring.Context.Support.XmlApplicationContext,此时,对象的配置信息写在一个 xml 的配置文件中,当然了,这个配置文件有特定的格式,这些规定以 Xml Schema 的形式保存在 Spring.NET\doc\schema 文件夹的 spring-objects-1.3.xsd 中。
对于上面的例子,我们可以编写如下的配置文件 objects.xml。
<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net">
<object id="Person" type="Student"></object>
<object id="Alice" type="Person"></object>
</objects>
然后,在代码中,就可以直接使用容器了。
Spring.Context.Support.XmlApplicationContext context
    = new Spring.Context.Support.XmlApplicationContext("objects.xml");
Person person = context.GetObject("Person") as Person;


Console.WriteLine(person);
如果你觉得这还是比较麻烦的话,还可以在程序启动的时候直接加载配置信息。

 

三、通过应用程序配置文件来自动加载 Spring.NET 配置

 

Spring.NET 提供了Spring.Context.Support.ContextHandler,帮助我们直接在启动程序的时候加载配置信息。
实际的配置文件通过 spring 元素中 context 元素下的 resource 指定,文件的话使用 file:// 协议描述,还可以使用其它的协议。例如嵌入在程序集中的配置文件可以使用  assembly:// , 直接写在配置文件中则为 config://
配置 Spring.NET
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="spring">
<section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/>
</sectionGroup>
</configSections>

<spring>
<context>
<resource uri="file://objects.xml"/>
</context>
</spring>
</configuration>
配置 Spring.NET
在程序中就可以直接使用了。
Spring.Context.IApplicationContext context
    = Spring.Context.Support.ContextRegistry.GetContext();


Person person = context.GetObject("Person") as Person;


Console.WriteLine(person);

 

四、将所有的配置信息都保存在应用程序配置文件中

 

还可以不再使用另外的 Spring 配置文件,而是将所有的配置信息都保存在应用程序配置文件中。
这需要使用一个新的配置处理器 Spring.Context.Support.DefaultSectionHandler,它可以帮助我们解析 spring 配置信息。
此时的配置文件成为如下的形式,注意,现在的 resource 中使用 config:// 表示使用配置文件中的信息。
配置 Spring.NET
<?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="config://spring/objects"/>
</context>
<objects>
<object id="Person" type="Student"></object>
<object id="Alice" type="Person"></object>
</objects>
</spring>

</configuration>

配置 Spring.NET

主程序与第三种情况是一样的。

 

五、混合使用外部配置文件和嵌入的配置

 

甚至还可以混合使用外部配置文件和嵌入的配置信息。
配置 Spring.NET
<?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="Alice" type="Person"></object>
</objects>
</spring>

</configuration>
配置 Spring.NET
下面是两种常用容器的类图。
配置 Spring.NET
im, 无色
  • 本文由 发表于 2019年8月1日21:43:22
Blazor环境配置 .NET

Blazor环境配置

最近发现微软出了一套很好玩的框架:Blazor,其最大的亮点是可以使用C#代码编写Web前端页面。(基于Razor,代码运行在WebAssembly上)由于之前经常使用Razor,所以很有兴趣,花了点...
.Net常用命令详解 .NET

.Net常用命令详解

1.Net常用命令: (1)net share - 查看共享命令 net share ipc共享 net share ipc共享 (xp系统无法删除) net share c$=c: - 设置c盘为共...
ADO.net入门(六):DataGridView .NET

ADO.net入门(六):DataGridView

前面我们主要用的是控制台(就是DOS窗体)来演示整个连接到数据库获取数据的过程。 下面我们把获得的数据集DataSet显示在窗体上,用一个DataGridView控件来实现。 DataGridView...
ADO.net入门(五):DataSet .NET

ADO.net入门(五):DataSet

得到回礼后,就成了我们自己的DataSet。 我来看看DataSet有什么东西呢?这个东西好不好,漂亮不? 回顾第一节中的框架,看图: DataSet结果集中包含了多个表的集合,上面红色线部分。 每个...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: