Spring实例化Bean的三中方式
新建一个web项目
引入最基本的 核心包和依赖的日志包
spring-core-3.2.0.RELEASE.jar
spring-expression-3.2.0.RELEASE.jar
spring-context-3.2.0.RELEASE.jar
spring-beans-3.2.0.RELEASE.jar
----以上4个是核心包
com.springsource.org.apache.commons.logging-1.1.1.jar
log4j-1.2.16.jar
----这两个是和log4j整合的包
第一种 : 默认无参构造器
这个必须保证 Bean1这个类 有午餐构造方法(若果没有就会报错)
public class Bean1 {
}
<!-- 实例化Bean1 Bean2 Bean3 -->
<!-- 第一种 默认无参数的构造器 -->
<bean id="bean1" class="com.test.rxtong.Bean1"></bean>
@Test
public void demo1(){
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
Bean1 b1 = (Bean1) context.getBean("bean1");
System.out.println(b1);
}
第二种 :静态工厂类
public class Bean2 {
}
public class MyFactoryBean {
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>//这里一定要是静态方法
public static Bean2 getBean2(){
return new Bean2();
}
}
<!-- 第二种 静态工厂方法 -->
<!-- class是 静态工厂类 -->
<!-- factory-method 工厂中提供静态方法 -->
<bean id="bean2" class="com.test.rxtong.MyFactoryBean" factory-method="getBean2"></bean>
@Test
public void demo2(){
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
Bean2 b2 = (Bean2) context.getBean("bean2");
System.out.println(b2);
}
第三种:实例工厂方法
public class Bean3 {
}
public class MyFactoryBean {
public Bean3 getBean3(){
return new Bean3();
}
}
<!-- 第三种 实例工厂方法 -->
<!-- 对工厂实例化 -->
<bean id="factoryBean" class="com.test.rxtong.MyFactoryBean"></bean>
<bean id="bean3" factory-bean="factoryBean" factory-method="getBean3"></bean>
@Test
public void demo3(){
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
Bean3 b3 = (Bean3) context.getBean("bean3");
System.out.println(b3);
}