一.默认通过构造方法创建对象:
pojo.Student类:
public class Student(){
public Student(){
System.out.println("我是一个默认的无参构造");
}
public void say(){
System.out.println("您好,我是一个学生!");
}
}
applicationContext.xml中:
<!--默认构造方法创建对象 -->
<bean id="student" class="pojo.Student"/>
测试spring默认创建对象的过程:
@Test
public void test(){
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
Student student = (Student)context.getBean("student");
student.say();
}
结果:
我是一个默认的无参构造
您好,我是一个学生!
注意:
如果将默认的构造方法覆盖或删除,则创建对象时会报错!!!
二.spring工厂创建对象:
factory.SpringFactory类:(实现FactoryBean接口)
public class SpringFactory implements FactoryBean<Calendar>{
//通过getObject方法获得对象
@Override
public Calendar getObject() throws Exception {
return Calendar.getInstance();
}
@Override
public Class<?> getObjectType() {
return null;
}
@Override
public boolean isSingleton() {
return false;
}
}
applicationContext.xml中:
<!--spring工厂创建对象 -->
<bean id="calendar1" class="factory.SpringFactory"></bean>
测试spring默认创建对象的过程:
@Test
public void test(){
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
Calendar calendar = (Calendar) context.getBean("calendar1");
System.out.println("时间为:"+calendar.getTime());
}
结果:
时间为:Thu Mar 02 09:41:19 CST 2017
三.通过静态工长创建对象:
applicationContext.xml中:
<!-- 通过静态工厂创建对象
class="静态工厂的calss类型"
factory-method 指的是静态方法
-->
<bean id="calendar2" class="factory.StaticFacotry" factory-method="getCalendar"></bean>
四.通过实例工厂创建对象:
applicationContext.xml中:
<!--实例工厂创建对象 -->
<bean id="newIntasanceFactory" class="factory.NewIntasanceFactory"></bean>
<bean id="calendar2" factory-bean="newIntasanceFactory" factory-method="getCalendar"></bean>