Spring创建Bean的3种方式

本文详细介绍了Spring框架中创建Bean的三种方式:构造器、静态工厂方法和实例工厂方法,并对比了它们之间的区别。通过具体代码示例展示了如何在配置文件中定义这些Bean。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. Spring创建Bean的三种方式


1. 调用构造器(因为常用就不讲)
2. 调用静态工厂方法
3. 调用实例工厂方法

2. 使用静态工厂方法

1.此时<bean.../>元素要指定以下两个属性

class:用于指定静态工厂类的完整类名

factory-method:用于指定创建Bean的静态工厂方法

2.代码:

//接口
public interface Animal{
    public void eat();
}

//Dog类
public class Dog implements Animal{
    private String msg;
    public void setMsg(String msg){
        this.msg=msg;
    }

    public void eat(){
        System.out.print(msg);
    }
}

//静态工厂类代码
public class AnimalFactroy{
    public static Animal getAnimal(String name){
        if("dogs".equalsInnoreCase(name)){
            return new Dog();
        }else{
            return new Cat();
        }
    }
}

3.用配置文件的形式创建Dog Bean的代码:

<bean id="dog" class="com.dfsj.AnimalFactroy" factory-method="getAnimal">
    <!--配置静态工厂方法的参数-->
    <constructor-arg value="dogs">
    <!--给新建Dog的msg属性赋值-->
    <property name="msg" value="我是狗">
</bean>

3. 使用实例工厂方法创建

此时<bean.../>元素要指定以下两个属性

factory-bean:该属性值为工厂类在配置文件中的id

factory-method:用于指定创建Bean的静态工厂方法

4. 静态工厂方法与实例工厂方法创建Bean时的区别

不同点

  1. 静态工厂要用class属性指定静态工厂类的完整类名,而实例工厂用factory-bean指定非静态工厂类在配置文件中的id
  2. 静态工厂的factory-method指定的方法是静态方法,而实例工厂的不是

相同点

  1. 二者都需要factory-method属性指定生产Bean实例的方法
  2. 工厂方法需要的参数都要通过<constructor-arg>来指定
  3. 具体的Bean实例的属性值赋值,都是通过<property.../>元素
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值