Spring实例参考04-通过工厂创建对象

本文供以下文章参考使用:

Spring笔记https://blog.csdn.net/qq_34378496/article/details/128095043java bean:

package com.evenif.bean;

public class Index {

    private int id;
    private String name;

    public Index() {
        System.out.println("create Index class");
    }

    public Index(int id, String name) {
        this.id = id;
        this.name = name;
        System.out.println("create Index class with params");
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Index{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}

 工厂类:

package com.evenif.factory;

import com.evenif.bean.Index;

public class MyFactory {
    public static Index newIndexInstance(int id,String name){
        return new Index(id,name);
    }
}

 配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd">
    <!-- 静态工厂 -->
    <bean id="indexFromFactory" class="com.evenif.factory.MyFactory" factory-method="newIndexInstance">
        <constructor-arg name="id" value="7"/>
        <constructor-arg name="name" value="iff07"/>
    </bean>
    <!-- 动态工厂 -->
    <bean id="myDynamicFactory" class="com.evenif.factory.MyDynamicFactory" />
    <!-- 该实例通过指定工厂的指定方法来创建 -->
    <!-- 设置别名方法01 -->
    <bean id="index" name="index02,index03 index04;index05" factory-bean="myDynamicFactory" factory-method="newIndexInstance">
        <constructor-arg name="id" value="8"/>
        <constructor-arg name="name" value="ifdf08"/>
    </bean>
    <!-- 设置别名方法02 -->
    <alias name="index" alias="index01"/>
</beans>

主测试类:

package com.evenif;

import com.evenif.bean.Index;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Main {

    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        //静态工厂获取对象
        Index indexFromFactory = (Index) context.getBean("indexFromFactory");
        System.out.println(indexFromFactory);
        //动态工厂获取对象
        Index indexFromDynamicFactory = (Index) context.getBean("index");
        System.out.println(indexFromDynamicFactory);

        Index indexAlias01 = (Index) context.getBean("index01");
        System.out.println(indexAlias01);
        Index indexAlias02 = (Index) context.getBean("index02");
        System.out.println(indexAlias02);
        Index indexAlias03 = (Index) context.getBean("index03");
        System.out.println(indexAlias03);
        Index indexAlias04 = (Index) context.getBean("index04");
        System.out.println(indexAlias04);
        Index indexAlias05 = (Index) context.getBean("index05");
        System.out.println(indexAlias05);
    }
}
//执行结果:
//        create Index class with params
//        create Index class with params
//        Index{id=7, name='iff07'}
//        Index{id=8, name='ifdf08'}
//        Index{id=8, name='ifdf08'}
//        Index{id=8, name='ifdf08'}
//        Index{id=8, name='ifdf08'}
//        Index{id=8, name='ifdf08'}
//        Index{id=8, name='ifdf08'}


版权声明:本文为qq_34378496原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。