(1) BeanDefinition元信息
|
属性(Property) |
说明 |
|
Class |
Bean全类名,必须是具体类,不能用抽象类或者是接口 |
|
Name |
Bean的名称或者是ID |
|
Scope |
Bean的作用域(如:singleton、prototype等) |
|
Constructor arguments |
Bean 构造器参数(用于依赖注入) |
|
Properties |
Bean属性设置(用于依赖注入) |
|
Autowiring mode |
Bean 自动绑定模式(如:通过名称byName) |
|
Lazy initialization mode |
Bean 延迟初始化模式(延迟和非延迟) |
|
Initialization method |
Bean 初始化回调方法名称 |
|
Destruction method |
Bean 销毁回调方法名称 |
(2)BeanDefinition构建
- 通过BeanDefinitionBuilder
- 通过AbstractBeanDefinition以及派生类
package org.binsoft.thinking.in.spring.bean.definition;
import org.binsoft.thinking.in.spring.ioc.overview.domain.User;
import org.springframework.beans.MutablePropertyValues;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.GenericBeanDefinition;
/**
* {@link org.springframework.beans.factory.config.BeanDefinition} 构建示例
*
* @author Administrator
* @version 1.0
* @date 2021/1/3 14:38
*/
public class BeanDefinitionCreationDemo {
public static void main(String[] args) {
//1、通过 BeanDefinitionBuilder构建
BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition(User.class);
//通过属性设置
beanDefinitionBuilder.addPropertyValue("id",1).addPropertyValue("name","彬少");
//获取 BeanDefinition 实例
BeanDefinition beanDefinition = beanDefinitionBuilder.getBeanDefinition();
System.out.println("BeanDefinition:" + beanDefinition);
//BeanDefinition 并非 Bean 终态,可以自定义修改
//2、通过 AbstractBeanDefinition 以及派生类
GenericBeanDefinition genericBeanDefinition = new GenericBeanDefinition();
// 设置 Bean 类型
genericBeanDefinition.setBeanClass(User.class);
//通过MutablePropertyValues 批量设置属性
MutablePropertyValues propertyValues = new MutablePropertyValues();
//propertyValues.addPropertyValue("1",1);
//propertyValues.addPropertyValue("name","彬少");
propertyValues.add("id",1).add("name","彬少");
genericBeanDefinition.setPropertyValues(propertyValues);
System.out.println("GenericBeanDefinition:" + genericBeanDefinition);
}
}
本文详细介绍了Spring框架中BeanDefinition的元信息及其构建方式,包括使用BeanDefinitionBuilder和AbstractBeanDefinition派生类来创建BeanDefinition实例的过程。
1312

被折叠的 条评论
为什么被折叠?



