Spring Framework:4.3.14.RELEASE
本文主要是论述 Spring Framework IOC 容器中 Bean 的实例化。
Bean 的实例化主要是两种方式:
通过构造函数实例化
通过构造函数实例化,前提条件是 Bean 含有一个无参构造器,可以是隐式无参构造器,也可以是显式无参构造器。
1 2 3 4 5 6 7 8 9 10 11 12 13
public class ExampleBeanOne { private String name; public void setName(String name) { this.name = name; } public String hello() { return "Hello " + name; } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
public class ExampleBeanTwo { private String name; public ExampleBeanTwo() { } public ExampleBeanTwo(String name) { this.name = name; } public String hello() { return "Hello " + name; } }
1 2 3 4 5 6 7
<bean id="exampleBeanOne" class="com.example.spring.ExampleBeanOne"> <property name="name" value="ExampleBeanOne"></property> </bean> <bean id="exampleBeanTwo" class="com.example.spring.ExampleBeanTwo"> <constructor-arg value="ExampleBeanTwo"></constructor-arg> </bean>
通过静态方法实例化
通过静态方法实例化,前提条件是有一个静态方法可以实例化 Bean,可以是自身提供的静态方法,也可以是其他类提供的静态方法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
public class ExampleBeanThree { private static ExampleBeanThree exampleBeanThree = new ExampleBeanThree("ExampleBeanThree"); private String name; public static ExampleBeanThree createInstance() { return exampleBeanThree; } private ExampleBeanThree(String name) { this.name = name; } public String hello() { return "Hello " + name; } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
public class ExampleBeanFive { private String name; public ExampleBeanFive() { } public ExampleBeanFive(String name) { this.name = name; } public String hello() { return "Hello " + name; } } public class ExampleBeanSix { private static ExampleBeanFive exampleBeanFive = new ExampleBeanFive("ExampleBeanFive"); public ExampleBeanFive createClientInstance() { return exampleBeanFive; } }
1 2 3 4 5 6 7 8
<bean id="exampleBeanThree" class="com.example.spring.ExampleBeanThree" factory-method="createInstance"> </bean> <bean id="exampleBeanSix" class="com.example.spring.ExampleBeanSix"> </bean> <bean id="exampleBeanFive" factory-bean="exampleBeanSix" factory-method="createClientInstance"> </bean>
通过静态方法实例化不常见,推荐使用构造函数实例化
近期评论