spring主要接口介绍以及bean生命周期简介

一. spring部分接口简介

BeanFactory: bean工厂,访问spring bean容器的根接口,bean容器的基本客户端视图;
主要提供了获取bean以及判断是否为为单例,是否包含指定bean等方法;
常见的字接口有ListableBeanFactory,ConfigurableBeanFactory;

ResourceLoader 类资源加载器,用于加载classpath路径或文件系统资源
子接口ResourcePatternResolver被ApplicationContext继承
提供了基本实现类:DefaultResourceLoader

Environment:运行application的环境,为应用在2个关键方面建模:profiles和properties
profile:指定当前是dev,test,prod等环境中的某一个
properties:各种属性配置,如:属性文件,JVM系统属性,系统环境变量,JNDI,Servlet上下文参数,临时属性对象,映射等
提供了AbstractEnvironment模版方法类和StandardEnvironment实现类

ApplicationContext:应用上下文(“其实现类是一个完整的,可使用的spring环境”),为context提供配置的中心接口;
继承ListableBeanFactory, HierarchicalBeanFactory提供beanfactory的功能
继承ResourceLoader提供资源加载功能
继承ApplicationEventPublisher提供事件发布监听功能
继承MessageSource提供i18n国际化功能
继承EnvironmentCapable提供基础环境功能(如:properties,系统等基本信息)
常用的模版方法模式实现类是AbstractApplicationContext
常用实现类:ClassPathXmlApplicationContext,AnnotationConfigApplicationContext,AnnotationConfigServletWebServerApplicationContext, XmlServletWebServerApplicationContext等

BeanDefinition:bean定义,表述bean实例,封装了操作bean基本属性的方法(
允许PropertyPlaceholderConfigurer对其进行自定义
模版方法类:AbstractBeanDefinition封装了bean的基本属性,用于继承;如:beanClass,beanName,scope,lazy,dependson,factoryBeanName,initMethodName,destroyMethodName等
主要实现类:RootBeanDefinition和GenericBeanDefinition(一般用这个定义一个普通的bean定义)

FactoryBean: 工厂bean,用于暴露bena的工厂,提供getObject获取具体bean
相比于普通bean,实现了该接口可用于自定bean,常用于框架底层
如果有个FactoryBean叫myFB, 那么ApplicationContext.getBean("&myFB")返回FactoryBean的实例(如果需要目标bean,需要手动调用getObject(),BeanFatory.getBean("myFB")返回FactoryBean包装的bean的实例(相当于自动调用了getObject()方法)

BeanDefinitionRegistryPostProcessor:BeanDefinition注册器后置处理器,作用在普通的BeanFactoryPostProcessor之前,用来添加新的bean(这些bean甚至可以来定义BFPP实例),用来添加beanDefinition

BeanFactoryPostProcessor:bean工厂后置处理器,用于自定义BeanDefinition
作用于BeanDefinition生成之后,实例化bean之前,不能作用于已实例的bean
典型的应用("${xxx}")占位符,对应PlaceholderConfigurerSupport抽象类

BeanPostProcessor:bean后置处理器,允许自定义bean,作用于bean实力化前后;
方法postProcessBeforeInitialization(作用于bean构造方法调用之后,初始化等方法调用之前,但bean属性已经填充)
方法postProcessAfterInitialization(作用于初始化方法之后),典型应用动态代理(Aop的实现方式)即通过该方法实现
典型应用:ioc的@Autowired和@Value注解,对应实现类AutowiredAnnotationBeanPostProcessor

二. spring bean生命周期简介

 

posted @ 2020-10-05 16:26  Katsu  阅读(481)  评论(0编辑  收藏  举报