Spring中的一些概念

BeanDefinition

BeanDefinition相当于一个设计书图纸,其中存在很多属性用来描述Bean的特点。

beanClass:bean的类型
scope:表示Bean作用域,单例或原型,(默认单例)

lazyInit:表示Bean是否是懒加载

initMethodName:表示Bean初始化要执行的方法名

destroyMethodName:表示Bean销毁时要执行的方法名

可以通过以下方式编程式定义Bean

AbstractBeanDefinition beanDefinition = BeanDefinitionBuilder.genericBeanDefinition().getBeanDefinition(); beanDefinition.setBeanClass(User.class);

beanDefinition.setScope("prototype"); // 设置作用域

beanDefinition.setInitMethodName("init"); // 设置初始化方法

beanDefinition.setLazyInit(true); // 设置懒加载

context.registerBeanDefinition("user", beanDefinition);

context.getBean("user");

BeanDefinitionReader

可以将一个类解析成BeanDefinition,并且解析该类的注解

eg:@Scope、@Lazy、@Conditional,@Role、@Primary、@DependsOn、 @Description

BeanFactory(重点)

通俗来讲,就是负责创建Bean的工厂,并且提供获取Bean的API.

我们常见的ApplicationContext其实就是一个BeanFactory,ApplicationContext继承了ListableBeanFactory 和HierarchicalBeanFactory,而ListableBeanFactory和HierarchicalBeanFactory都继承至 BeanFactory,所以可以认为ApplicationContext继承了BeanFactory。ApplicationContext比BeanFactory更加强大,因为它继承了很多其他的接口,

例如:MessageSource(国际化),ApplicationEventPublisher(时间发布)等。

BeanFactory有一个非常重要的实现类:DefaultListableBeanFactory实现了很多很多强大的功能。

1. AliasRegistry:支持别名功能,一个名字可以对应多个别名

2. BeanDefinitionRegistry:可以注册、保存、移除、获取某个BeanDefinition

3. BeanFactory:Bean工厂,可以根据某个bean的名字、或类型、或别名获取某个Bean对象

4. SingletonBeanRegistry:可以直接注册、获取某个单例Bean

5. SimpleAliasRegistry:它是一个类,实现了AliasRegistry接口中所定义的功能,支持别名功能

6. ListableBeanFactory:在BeanFactory的基础上,增加了其他功能,可以获取所有BeanDefinition的beanNames,可以根据某个类型获取对应的beanNames,可以根据某个类 型获取{类型:对应的Bean}的映射关系

7. HierarchicalBeanFactory:在BeanFactory的基础上,添加了获取父BeanFactory的功能

8. DefaultSingletonBeanRegistry:它是一个类,实现了SingletonBeanRegistry接口,拥有了直 接注册、获取某个单例Bean的功能

9. ConfigurableBeanFactory:在HierarchicalBeanFactory和SingletonBeanRegistry的基础上, 添加了设置父BeanFactory、类加载器(表示可以指定某个类加载器进行类的加载)、设置 SpringEL表达式解析器(表示该BeanFactory可以解析EL表达式)、设置类型转化服务(表示 该BeanFactory可以进行类型转化)、可以添加BeanPostProcessor(表示该BeanFactory支持 Bean的后置处理器),可以合并BeanDefinition,可以销毁某个Bean等等功能

10. FactoryBeanRegistrySupport:支持了FactoryBean的功能

11. AutowireCapableBeanFactory:是直接继承了BeanFactory,在BeanFactory的基础上,支持 在创建Bean的过程中能对Bean进行自动装配

12. AbstractBeanFactory:实现了ConfigurableBeanFactory接口,继承了FactoryBeanRegistrySupport,这个BeanFactory的功能已经很全面了,但是不能自动装配和 获取beanNames

13. ConfigurableListableBeanFactory:继承了ListableBeanFactory、 AutowireCapableBeanFactory、ConfigurableBeanFactory

14. AbstractAutowireCapableBeanFactory:继承了AbstractBeanFactory,实现了 AutowireCapableBeanFactory,拥有了自动装配的功能。

15. DefaultListableBeanFactory:继承了AbstractAutowireCapableBeanFactory,实现了 ConfigurableListableBeanFactory接口和BeanDefinitionRegistry接口,所以 DefaultListableBeanFactory的功能很强大。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值