一、开发环境
操作系统:Win10
编译器:VS2013
.Net版本:.net framework4.5
二、涉及程序集
Spring.Core.dll:1.3.1
Common.Logging.dll
三、开发过程
1.项目结构
2.编写Product.cs
namespace SpringNetDi { public class Product { public string Name { get; set; } public decimal UnitPrice { get; set; } } }
3.编写ProductFactory.cs
namespace SpringNetDi { public class ProductFactory { public Product FactoryProduct { get; set; } } }
4.编写Article.cs
namespace SpringNetDi { public class Article { private string name; private string writer; public Article(string name, string writer) { this.name = name; this.writer = writer; } public void GetMsg() { Console.WriteLine("你好,我是" + writer); } } }
5.配置app.config
<?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> <!--01属性注入-值类型--> <object name =" product" type="SpringNetDi.Product,SpringNetDi"> <property name="Name" value="记号笔"></property> <property name="UnitPrice" value="5"></property> </object> <!--02属性注入-引用类型--> <object name="factory" type="SpringNetDi.ProductFactory,SpringNetDi"> <property name="FactoryProduct" ref="product"></property> </object> <!--03构造函数注入--> <object name="article" type="SpringNetDi.Article,SpringNetDi"> <constructor-arg name="name" value="依赖注入"></constructor-arg> <constructor-arg name="writer" value="Kimisme"></constructor-arg> </object> </objects> </spring> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </startup> </configuration>
6.控制台代码
namespace SpringNetDi { class Program { static void Main(string[] args) { IApplicationContext context = ContextRegistry.GetContext(); Product product = context.GetObject("product") as Product; Console.WriteLine(product.Name); ProductFactory factory = context.GetObject("factory") as ProductFactory; Console.WriteLine(factory.FactoryProduct.Name); Article article = context.GetObject("article") as Article; article.GetMsg(); Console.WriteLine("ok"); } } }