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生命周期简介
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用