06-bean的三种实例化方法

文章介绍了Spring框架中三种Bean实例化的方法:构造方法实例化、静态工厂方法实例化和实例工厂方法实例化。对于构造方法实例化,可以通过默认或带参数的构造器创建Bean;静态工厂方法需要定义静态工厂类和方法;实例工厂方法则涉及工厂实例的创建和方法调用。每种方法都详细说明了配置过程和注意事项。
摘要由CSDN通过智能技术生成

在 Spring 框架中,Bean 实例化的方式有三种:构造方法实例化、静态工厂方法实例化和实例工厂方法实例化。

1. 构造方法实例化

通过在 Spring 配置文件中定义 Bean 元素的方式实例化 Bean,可以使用默认构造方法或带参数的构造方法。如果使用默认构造方法,只需要在 Bean 元素中指定 Bean 的类名;如果使用带参数的构造方法,需要在 Bean 元素中添加一个 constructor-arg 元素,指定其对应的参数。

<bean id="user" class="com.example.User">
    <constructor-arg value="Tom"/>
    <constructor-arg value="20"/>
</bean>

在上面的例子中,使用了 User 的带参数的构造方法来实例化 Bean,同时通过 constructor-arg 元素指定了其对应的参数值。

  • 在 Bean 元素中,id 属性指定了该 Bean 的唯一标识符,class 属性指定了该 Bean 的类型。

  • constructor-arg 元素用于指定构造方法的参数值,value 属性用于指定参数的值。可以使用 index 属性或者 type 属性来指定带参数的构造方法的参数顺序。

<bean id="user" class="com.example.User">
    <constructor-arg index="0" value="Tom"/>
    <constructor-arg index="1" value="20"/>
</bean>

在上述示例中,使用 index 属性来指定构造方法的参数顺序。

<bean id="user" class="com.example.User">
    <constructor-arg type="java.lang.String" value="Tom"/>
    <constructor-arg type="int" value="20"/>
</bean>

在上述示例中,使用 type 属性来指定构造方法的参数类型。

需要注意的是,如果使用默认构造方法来实例化 Bean,则只需要在 Bean 元素中指定 Bean 的类名即可,不需要使用 constructor-arg 元素指定参数。

2. 静态工厂方法实例化

静态工厂方法实例化是 Spring 中实例化 Bean 的一种方式。通常情况下,需要定义一个静态的工厂类,该类中包含一个或多个静态方法用来创建 Bean 实例。示例代码如下:

<bean id="user" class="com.example.User" factory-bean="UserFactory" factory-method="createUser"/>

在上述示例中,id 属性指定了该 Bean 的唯一标识符,class 属性指定了该 Bean 的类型,factory-bean 属性指定了工厂类的名称,factory-method 属性指定了工厂方法的名称。

以下是 UserFactory 类的代码:

public class UserFactory {
    public static User createUser() {
        return new User("Tom", 20);
    }
}

在上述代码中,createUser 方法是一个静态的工厂方法,用于创建 User 实例。注意要使得该方法能够被 Spring 调用,需要将其定义为 public 和 static 方法。

需要注意的是,工厂类和工厂方法都必须是 public 的,并且工厂方法必须是 static 的。此外,在使用静态工厂方法实例化 Bean 时,Bean 的构造函数可以是私有的。

3. 实例工厂方法实例化

实例工厂方法实例化是 Spring 中实例化 Bean 的一种方式。与静态工厂方法实例化不同,使用实例工厂方法实例化时需要先创建一个工厂实例,然后通过该实例调用实例方法来创建 Bean 实例。示例代码如下:

<bean id="userFactory" class="com.example.UserFactory"/>
<bean id="user" factory-bean="userFactory" factory-method="createUser"/>

在上述示例中,id 属性指定了该 Bean 的唯一标识符,class 属性为 UserFactory 类的全限定名,factory-bean 属性指定了工厂实例的名称,factory-method 属性指定了调用工厂实例方法时要使用的方法名称。

以下是 UserFactory 类的代码:

public class UserFactory {
    public User createUser() {
        return new User("Tom", 20);
    }
}

在上述代码中,createUser 方法是一个实例方法,用于创建 User 实例。注意要使得该方法能够被 Spring 调用,需要将其定义为 public 的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值