系列十九、Spring实例化bean的方式

一、概述

        所谓实例化bean,大白话讲就是Spring如何把这一个个的普通的Java对象创建为Spring bean的。

二、方式

Spring中实例化bean常用的有以下四种,即:

        ① 构造器方式;

        ② 静态工厂方式;

        ③ 实例工厂方式;

        ④ FactoryBean方式;

        下面通过案例进行部分代码的演示:

2.1、 构造器方式(略)

2.2、静态工厂方式

2.2.1、User

/**
 * @Author : 一叶浮萍归大海
 * @Date: 2023/11/26 18:03
 * @Description:
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
@ToString(callSuper = true)
public class User implements Serializable {

    private String name;

    private Integer age;

    public static User instantiateUser() {
        System.out.println("User's instantiateUser() was invoked!");
        return new User();
    }

}

2.2.2、applicationContext.xml

<!--
	通过静态工厂方式实例化bean
	注意事项:factory-method指定的方法需为静态方法
-->
<bean id="user" class="org.star.User" scope="prototype" factory-method="instantiateUser"></bean>

2.2.3、测试

@Test
public void instantiateUser() {
	ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
	User user = context.getBean("user",User.class);
	System.out.println("user = " + user);
}

2.3、实例工厂方式

2.3.1、User(同上)

2.3.2、UserFactory

/**
 * @Author : 一叶浮萍归大海
 * @Date: 2023/11/26 18:22
 * @Description:
 */
public class UserFactory {

    public User instantiateUser() {
        System.out.println("UserFactory's instantiateUser() was invoked!");
        return new User();
    }

}

2.3.3、applicationContext

<!--
	通过实例工厂的方式实例化bean
	说明:@Bean的底层就是通过 factory-bean + factory-method 实现的
-->
<bean id="userFactory" class="org.star.UserFactory"></bean>
<bean id="user2" class="org.star.User" factory-bean="userFactory" factory-method="instantiateUser"></bean>

2.3.4、测试

@Test
public void instantiateUser() {
	ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
	User user = context.getBean("user2",User.class);
	System.out.println("user = " + user);
}

2.4、FactoryBean方式

        参考 系列三、IOC操作bean管理 #基于FactoryBean方式,这里不再赘述。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值