factory-method

目录

1、概述

2、示例

创建User类

创建 factory-method 类

spring配置

spring引导类

运行结果


1、概述

factory-method:通过工厂类创建Spring bean。两种方式:一种静态方法,一种动态方法。

2、示例

创建User类

package thinking.in.spring.boot.samples.spring5.bean;

public class User {
    private int id;
    private String name;

    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 "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}

创建 factory-method 类

package thinking.in.spring.boot.samples.spring5.factorybean;

import thinking.in.spring.boot.samples.spring5.bean.User;

/**
 * 演示 factory-method
 */
public class UserFactory {


    public static User getStaticUser() throws Exception {
        User user = new User();
        user.setId(100);
        user.setName("静态工厂方法创建User");
        return user;
    }

    public User getDynamicUser() throws Exception {
        User user = new User();
        user.setId(200);
        user.setName("动态工厂方法创建User");
        return user;
    }

}

spring配置


    <!-- 静态 factory-method 示例 -->
    <bean id="staticFactoryMethod" class="thinking.in.spring.boot.samples.spring5.factorybean.UserFactory"
        factory-method="getStaticUser" />

    <!-- 动态 factory-method 示例 -->
    <bean id="userFactory" class="thinking.in.spring.boot.samples.spring5.factorybean.UserFactory" />
    <bean id="dynamicFactoryMethod" factory-bean="userFactory"
        factory-method="getDynamicUser" />

spring引导类

package thinking.in.spring.boot.samples.spring5.bootstrap;

import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import thinking.in.spring.boot.samples.spring5.customlabel.CustomLabel;
import thinking.in.spring.boot.samples.spring5.bean.User;
import thinking.in.spring.boot.samples.spring5.factorybean.UserFactoryBean;

public class XmlBeanFactoryBootstrap {

    public static void main(String[] args) {
        DefaultListableBeanFactory defaultListableBeanFactory = new XmlBeanFactory(new ClassPathResource("application-context.xml"));


        /**
         * factory-method
         */
        User staticUser = (User) defaultListableBeanFactory.getBean("staticFactoryMethod");
        System.out.println("factory-method 实例化的User对象:" + staticUser);
        User dynamicUser = (User) defaultListableBeanFactory.getBean("dynamicFactoryMethod");
        System.out.println("factory-method 实例化的User对象:" + dynamicUser);

    }
}

运行结果

factory-method 实例化的User对象:User{id=100, name='静态工厂方法创建User'}
factory-method 实例化的User对象:User{id=200, name='动态工厂方法创建User'}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值