关于SpringBean的创建方式

目录

一、前置

二、实例


一、前置

最近看了一下Spring的doCreateBean方法的实现,里面提到Spring会利用策略查看是否是工厂方法的bean,是则利用工厂直接构建。反之再选择对应参数的构造。

于是乎复习了一下SpringBean的构建方法,分为:

1.构造构建

2.工厂构建

3.静态工厂构建

二、实例

我们通过XML的方式来配置bean。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	   xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd" >

	
	<!-- 默认构造实例化 -->
	<bean id="bean1" class="com.example.demo.bean.Bean"/>

	<!-- 指定构造器实例化 -->
	<bean id="bean2" class="com.example.demo.bean.Bean">
		<!-- 指定构造器参数 index对应构造器中参数的位置 -->
		<!-- 也可以通过指定参数类型,指定参数名称来注入属性-->
		<constructor-arg index="0" value="小明"/>
		<constructor-arg index="1" value="3"/>
	</bean>
	
	<!--  工厂方法 -->
	<bean id="factory" class="com.example.demo.factory.FactoryCreateBean"></bean>
	
	<bean id="factoryBean" factory-method="getBean" factory-bean="factory"></bean>

	<!-- 静态工厂 -->
	<bean id="staticBean" class="com.example.demo.factory.FactoryCreateBean" factory-method="getStaticBean"></bean>
</beans>

则有输出为:

public static void main(String[] args) {
		
		BeanFactory bf = new XmlBeanFactory(new ClassPathResource("/bean.xml"));
		//测试静态工厂
		Object bean2 = bf.getBean("staticBean");
		
		System.out.println(bean2);
	}
输出:
11:08:41.880 [main] DEBUG org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loaded 5 bean definitions from class path resource [bean.xml]
11:08:41.885 [main] DEBUG org.springframework.beans.factory.xml.XmlBeanFactory - Creating shared instance of singleton bean 'staticBean'

Bean [name=null, age=null]

其他的测试可以自己测试一下,都是一样的。

另外提一点:Spring检测bean是否是工厂方法构建的bean其中一种方式就是XML的factory-method属性标签。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Spring Bean创建过程涉及到以下几个步骤:1. 定义Bean:在XML文件或注解定义Bean;2. 加载配置:通过ClassPathXmlApplicationContext或AnnotationConfigApplicationContext来加载Bean定义;3. 实例化Bean:使用反射机制实例化Bean;4. 注入依赖:将Bean定义定义的依赖注入到Bean实例;5. 返回Bean:返回Bean实例。 ### 回答2: Spring Bean创建过程主要包括以下几个步骤: 1. 配置文件读取:首先,Spring会读取配置文件,例如XML配置文件或者Java配置类,获取Bean的定义和依赖关系。 2. Bean定义解析:Spring将解析配置文件,根据Bean的定义创建和维护一个内部的Bean定义注册表。这个注册表记录了Bean的各种属性,如Bean的类名、作用域、构造函数参数、依赖关系等。 3. Bean实例化:根据Bean的定义,Spring创建Bean的一个实例。可以使用构造函数实例化Bean,也可以通过工厂方法或者Bean的后置处理器(BeanPostProcessor)进行实例化。 4. 依赖注入:如果Bean有依赖关系,Spring会自动将依赖的Bean注入到当前Bean。注入方式可以是构造函数注入、setter方法注入或者接口注入。 5. Bean的初始化:如果Bean实现了InitializingBean接口,Spring会调用其初始化方法进行一些初始化操作。同时,还可以通过配置文件的init方法或者注解的方式指定初始化方法。 6. Bean的后置处理:Spring提供了很多Bean的后置处理器,可以在Bean的初始化前后进行一些额外的处理,例如Bean的属性赋值、Proxy创建等。 7. Bean的销毁:当Spring容器关闭时,会调用Bean的销毁方法进行资源的释放和清理工作。销毁方法可以通过实现DisposableBean接口、配置文件的destroy方法或者注解的方式指定。 以上是Spring Bean创建过程的主要步骤。Spring利用配置文件和反射机制,将Bean的创建、依赖注入和初始化等过程解耦,提供了灵活和可扩展的开发方式

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值