![]()
配置文件 import.xml
1 <?xml version="1.0" encoding="utf-8" ?>
2 <objects xmlns="http://www.springframework.net" xmlns:aop="http://www.springframework.net/aop">
3
4 <!--带参数的构造函数-->
5 <object id="HelloWorld1" type="IocApp.HelloWorld, IocApp">
6 <constructor-arg name="name" value="Wang" />
7 <constructor-arg name="age" value="23" />
8 </object>
9
10 <!--不带参数的构造函数,并且给属性赋值-->
11 <object id="HelloWorld2" type="IocApp.HelloWorld, IocApp">
12 <property name="Name" value="Tom" />
13 </object>
14 <!--静态工厂方法创建对象-->
15 <object id="HelloWorld3" type="IocApp.HelloWorld, IocApp" factory-method="Create"/>
16
17 <!--实例工厂方法创建对象-->
18 <object id="HelloWorld4" type="IocApp.HelloWorld, IocApp" factory-method="Build" factory-object="builder" />
19 <object id="builder" type="IocApp.Builder, IocApp" />
20
21 <!--对象初始化方法-->
22 <object id="HelloWorld5" type="IocApp.HelloWorld, IocApp" init-method="Init" singleton="false"/>
23
24 <!--工厂类 的静态工厂方法 不带参数-->
25 <object id="HelloWorld6" type="IocApp.Builder, IocApp" factory-method="StaticBuild" />
26
27 <!--工厂类 的静态工厂方法 带参数 且参数为Type类型-->
28 <object id="HelloWorld7" type="IocApp.Builder, IocApp" factory-method="StaticBuild">
29 <constructor-arg name="type" value="IocApp.HelloWorld, IocApp"/>
30 </object>
31 </objects>
1 using Spring.Core;
2 using Spring.Context;
3 using Spring.Context.Support;
4
5 public class Builder
6 {
7 public HelloWorld Build()
8 {
9 return new HelloWorld("Builder", 30);
10 }
11
12 public static HelloWorld StaticBuild()
13 {
14 return new HelloWorld("StaticBuilder", 21);
15 }
16
17
18 public static object StaticBuild(Type type)
19 {
20 return Activator.CreateInstance(type);
21 }
22
23 }
24
25 public class HelloWorld
26 {
27 private string name;
28 private int age;
29
30 public HelloWorld(string name, int age)
31 {
32 this.name = name;
33 this.age = age;
34 }
35 public string Name
36 {
37 get
38 {
39 return name;
40 }
41 set
42 {
43 name=value;
44
45 }
46 }
47
48 public HelloWorld()
49 {
50
51 }
52
53 public void init()
54 {
55 name="init Name";
56 age=29;
57 }
58 public static HelloWorld Create()
59 {
60 return new HelloWorld("wangQiang", 25);
61 }
62 public override string ToString()
63 {
64 return String.Format("Name={0}; Age={1}", name, age);
65 }
66 }
67
68 public class Program
69 {
70 static IApplicationContext context = new XmlApplicationContext(@"..\..\import.xml");
71 static void Main(string[] args)
72 {
73
74
75 for (int i=1; i<=7; i++)
76 Show("HelloWorld"+i);
77
78 Console.ReadKey();
79 }
80
81 static void Show(string id)
82 {
83 object o1=context.GetObject(id);
84 object o2=context.GetObject(id);
85 Console.WriteLine(o1);
86 Console.WriteLine(id+ " IsEqueals:"+ object.ReferenceEquals(o1, o2)); // output: true
87 }
88
89 }