Spring底层创建对象的几种方式

来源:互联网 发布:winscp是什么软件 编辑:程序博客网 时间:2024/05/18 04:51

一.默认通过构造方法创建对象:
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默认创建对象的过程:

@Testpublic 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默认创建对象的过程:

@Testpublic 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>
0 0
原创粉丝点击