一个Spring的配置管理接口

我同事写了个Java版的spring的配置文件管理的类,可以灵活的控制Spring配置文件的加载,尤其是能很好的照顾到工程和测试单元,感觉很好用,于是就移植到.NET上来。

SystemConfig类,该类负责配置文件的管理,可根据项目的具体需求略做修改

View Code
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq;
using System.Text;
using System.Xml;

public class SystemConfig
{
private const string SYSTEM_CONFIG_XML = "SystemConfig.xml";

private static IList<String> springxmllist;
private static StringDictionary dblist;

private static void init()
{
XmlDocument xmlDoc;
try
{
xmlDoc
= new XmlDocument();
string path = AppDomain.CurrentDomain.BaseDirectory;
xmlDoc.Load(path
+ SYSTEM_CONFIG_XML);
XmlNode xmlNodes
= xmlDoc.SelectSingleNode("systemconfig/spring-config");
XmlNodeList nodelist
= xmlNodes.SelectNodes("//spring-xml");

// spring配置文件列表
try
{
springxmllist
= new List<string>();
foreach (XmlElement el in nodelist) //读元素值
{
springxmllist.Add(el.InnerText.Trim());
Console.WriteLine(el.InnerText.Trim());
}
}
catch (Exception ex1491)
{
Console.WriteLine(ex1491.StackTrace);
}

// 数据库列表
try
{
dblist
= new StringDictionary();
xmlNodes
= xmlDoc.SelectSingleNode("systemconfig/dblist");
nodelist
= xmlNodes.SelectNodes("//dbid");
foreach (XmlElement el in nodelist)
{
dblist.Add(el.InnerText.Trim(), el.Attributes[
"name"].InnerText);
Console.WriteLine(el.InnerText
+ el.Attributes["name"].InnerText);
}
}
catch (Exception ex1492)
{
Console.WriteLine(ex1492.StackTrace);
}

}
catch (Exception ex)
{
Console.WriteLine(ex.StackTrace);
}
}

public static IList<String> getSpringxmllist()
{
if (springxmllist == null)
{
init();
}
return springxmllist;
}

public void setSpringxmllist(IList<String> springxmllist)
{
SystemConfig.springxmllist
= springxmllist;
}

public static StringDictionary getDblist()
{
if (dblist == null)
{
init();
}
return dblist;
}

public static void setDblist(StringDictionary dblist)
{
SystemConfig.dblist
= dblist;
}

}

SpringContext类,该类负责加载Spring配置文件

View Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Spring.Context;
using Spring.Context.Support;
public class SpringContext {
private static IApplicationContext ctx = null;

private SpringContext() { /* 单例模式,防止反复加载 */ }

static public IApplicationContext getApplicationContext() {
if (ctx == null) {
// 从配置文件SystemConfig.xml中加载spring配置文件
int xmlCount = SystemConfig.getSpringxmllist().Count;
string[] springxml = new string[xmlCount];
for (int i = 0; i < xmlCount; i++)
springxml[i]
= SystemConfig.getSpringxmllist()[i];
ctx
= new XmlApplicationContext(springxml);
}
return ctx;
}
}

SystemConfig.xml文件,一个参考样本

View Code
<?xml version="1.0" encoding="UTF-8"?>
<systemconfig>
<spring-config>
<spring-xml>data.xml</spring-xml>
<spring-xml>applicationContext-resources.xml</spring-xml>
<spring-xml>applicationContext-transactions.xml</spring-xml>
<spring-xml>applicationContext-dao.xml</spring-xml>
</spring-config>
<dblist>
<dbid name="测试数据库">11</dbid>
<dbid name="xx1数据库">10</dbid>
<dbid name="xx2数据库">31</dbid>
<dbid name="xx3数据库">51</dbid>
</dblist>
</systemconfig>

posted on 2011-06-20 20:56  东东的乐园  阅读(586)  评论(0编辑  收藏  举报

导航