【Spring学习】底层架构核心概念-BeanDefinition

一、BeanDefinition含义(理解描述)

BeanDefinition表示Spring容器中Bean的定义,在BeanDefinition类中存在很多属性用来描述一个Bean的定义。
注释:Spring容器中Bean的定义,就是通过xml配置、扫描注解把需要纳入入到Spring容器中的类,通过BeanDefinition来定义。

二、BeanDefinition类中属性:

beanClass,表示Bean类型
scope,表示Bean作用域,单例或原型等
lazyInit:表示Bean是否是懒加载
initMethodName:表示Bean初始化时要执行的方法
destroyMethodName:表示Bean销毁时要执行的方法
等等...

三、定义Bean的方式

3.1 声明式定义Bean

xml配置【<bean/>】
[email protected]
[email protected](@Service,@Controller)】

3.2 编程式定义Bean

AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);

// 生成一个BeanDefinition对象,并设置beanClass为 XXXX.class,并注册到ApplicationContext中
AbstractBeanDefinition beanDefinition = BeanDefinitionBuilder.genericBeanDefinition().getBeanDefinition();

beanDefinition.setBeanClass(XXXX.class);
beanDefinition.setScope("prototype"); // 设置作用域
beanDefinition.setInitMethodName("init"); // 设置初始化方法
beanDefinition.setLazyInit(true); // 设置懒加载
....
context.registerBeanDefinition("xxxx", beanDefinition);

//会打印出从Spring容器中获取到的Xxxx对象
System.out.println(context.getBean("xxxx"));

注释:编程式方式定义的Bean方式和声明式方式所定义的Bean,最终都会被Spring解析为对应的BeanDefinition对象,并放入Spring容器中。

四、BeanDefinition读取器

版权声明:
作者:十下
链接:http://blog.edkso.cn/?p=1027
来源:十下博客
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
< <上一篇
下一篇>>
文章目录
关闭
目 录