一、概述
所谓实例化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方式,这里不再赘述。