Spring.NET环境搭建详解
一、环境下载及安装
到Spring的官方网站下载Spring.NET框架的安装文件(Spring.NET-1.3.2.exe),下载并解压后就可以了。
我们使用Spring.NET框架经常用到的一下几个文件:
Common.Logging.dll(必要)
Spring.Core.dll(必要)
Spring.Data.dll
Spring.Aop.dll(可选)
Spring.Data.NHibernate21.dll
Spring.Web.dll
- <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 id="" type="">
- </object>
- <object id="." type="">
- </object>
- </objects>
同样也可以找到Spring.NET解压目录下的Spring.NET-1.3.2\doc\schema,把里面的几个.xsd复制到VS2008安装目录下的Microsoft Visual Studio 9.0\Xml\Schemas文件夹。
必要的时候可以安装建立Spring.NET程序的模板Spring.NET-1.3.2\dev-support\vs.net-2008\install-templates.bat。
二、建立一个Spring.NET应用程序
我们新建一个Objects.xml的文件,然后从Spring.NET手册中复制来一段配置模板
- <?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 id="PersonDao" type="FirstSpringNetApp.PersonDao, FirstSpringNetApp">
- </object>
- </objects>
目前我找到了实例化Spring.NET容量的两种方式:
1.实际物理路径
IResource input = new FileSystemResource(@"D:\Objects.xml"); //实际物理路径
IObjectFactory factory = new XmlObjectFactory(input);
2.程序集下寻找配置文件
- string[] xmlFiles = new string[]
- {
- "file://Objects.xml"
- };
- IApplicationContext context = new XmlApplicationContext(xmlFiles);
- IObjectFactory factory = (IObjectFactory)context;
- Console.ReadLine();
目前我一般采用后者(程序集下寻找配置文件),这样维护起来比较方便。
这种方式需满足URI语法。
file://文件名
assembly://程序集名/命名空名/文件名
然而更好的方式是在配置文件App.config或Web.config添加自定义配置节点
在配置文件中要引入<objects xmlns="http://www.springframework.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="assembly://FirstSpringNetApp/FirstSpringNetApp/Objects.xml"/>
- <resource uri="config://spring/objects" />
- </context>
- <objects xmlns="http://www.springframework.net"/> <!--必要-->
- </spring>
- </configuration>
- namespace FirstSpringNetApp
- {
- class Program
- {
- static void Main(string[] args)
- {
- AppRegistry();
- Console.ReadLine();
- }
- static void AppRegistry()
- {
- IApplicationContext ctx = ContextRegistry.GetContext();
- Console.WriteLine(ctx.GetObject("PersonDao").ToString());
- }
- static void XmlSystem()
- {
- string[] xmlFiles = new string[]
- {
- //"file://Objects.xml" //, 文件名
- "assembly://FirstSpringNetApp/FirstSpringNetApp/Objects.xml" //程序集
- };
- IApplicationContext context = new XmlApplicationContext(xmlFiles);
- IObjectFactory factory = (IObjectFactory)context;
- Console.WriteLine(factory.GetObject("PersonDao").ToString());
- }
- static void FileSystem()
- {
- IResource input = new FileSystemResource(@"D:\Objects.xml"); //实际物理路径
- IObjectFactory factory = new XmlObjectFactory(input);
- Console.WriteLine(factory.GetObject("PersonDao").ToString());
- }
- }
- }