当前位置:XML > XML发布历程

spring通俗易懂的了解BeanD

什么是BeanDefinition

简单说就是对Bean信息的定义。

描述一个bean的全部信息,比如他的class类型、Bean的作用域、是否懒加载…

spring中每一个被扫描到的bean都会生成一个BeanDefinition。

BeanDefinition的主要作用是为了在只解析一次类的情况下,最大程度的拿到这类的信息。防止重复解析导致效率变低。

spring采用ASM(字节码解析的工具)技术去得到BeanDefinition。

BeanDefinition中的常用属性

beanClass:表示Bean类型,未加载类的时候存放Bean的名字,加载类后存放Bean的class信息。

scope:表示Bean的作用域,一般值为单例或者原型。

lazyInit:表示Bean是否是懒加载。

initMethodName:Bean初始化需要执行的方法。

destroyMethodName:Bean销毁时要执行的方法。

factoryBeanName:创建当前Bean的工厂。

几种Bean的定义方式

xml中配置:

Bean

Component(

Service,

Controller)

编程式定义Bean

//得到beanDefinitionAbstractBeanDefinitionbeanDefinition=BeanDefinitionBuilder.genericBeanDefinition().getBeanDefinition();//把一个类设置为BeanbeanDefinition.setBeanClass(Test.class);//把这个Bean注册到容器中context.registerBeanDefinition("test",beanDefinition);

BeanDefinition是如何存放的?

privatefinalMapString,BeanDefinitionbeanDefinitionMap=newConcurrentHashMap();

当Bean注册完成后,会在spring容器中把扫描到的beanDefinition存放到beanDefinitionMap中,方便后续的使用。

BeanDefinition的常见读取器

AnnotatedBeanDefinitionReader:解析类上的注解,包含某些注解的时候会成为Bean。

XmlBeanDefinitionReader:可以解析xml文件中的标签。

ClassPathBeanDefinitionScanner:扫描包路径的读取器。

结束语




转载请注明:http://www.vviuov.com/jbjc/1063192.html

  • 上一篇文章:
  • 下一篇文章: 没有了