Spring中Bean的生命周期是怎样的?spring中XXXAware接口的作用?java底层序列化步骤?使用 protobuf 进行数据序列化?线程池的执行流程

spring中XXXAware接口的作用
Aware接口,是Spring中的一个根接口。Aware的中文含义,是“意识到,察觉到,发觉,发现”,所以该接口的目的,通过实现Aware的子接口,让类添加发觉信息的能力。
常见的Aware直接实现类:
ApplicationContextAware
实现该接口,可以访问Spring容器中缓存的的其他Bean。
获取的ApplicationContext,ApplicationContext接口继承了MessageSource, ApplicationEventPublisher, ResourcePatternResolver,可以实现 {@link ResourceLoaderAware},
{@link ApplicationEventPublisherAware} or {@link MessageSourceAware} 的功能。
//TODO file resources 相关
//TODO BeanFactoryPostProcessor
EnvironmentAware
实现该接口,项目启动时,可以获取环境变量配置。
BeanFactoryAware
获取加载该Bean的Bean工厂,可以动态加载Bean.
//TODO BeanFactory和ApplicationContext的区别
ApplicationEventPublisherAware
可以i获取ApplicationEventPublisher,ApplicationEventPublisher可以用来发布事件,结合ApplicationListener来共同使用,下文在介绍ApplicationListener时会详细提到。这个对象也可以通过spring注入的方式来获得
ResourceLoaderAware
可以获取ResourceLoader,ResourceLoader可以获取classpath内所有的资源对象。
BeanNameAware
注入Bean的名字。
ServletContextAware
可以获得ServletContext,ServletContext被称为域对象,是一个全局存储信息的空间。
服务器会为每一个工程创建一个ServletContext对象,工程内所有Servlet都会共享这个Servlet上下文。
应用被移除或服务器关闭时,才会被销毁,可以在整个应用过程中共享数据变量。
setAttribute(String name,Object value); 添加一个域属性
getAttribute(String name) 获取域属性
removeAttribute(String name) 删除域属性
ServletContext接口的初始化参数允许servlet访问与web应用相关的上下文初始化参数,这些由应用开发人员在部署描述符中指定:
getInitParameter
getInitParameterNames
java底层序列化步骤
使用 protobuf 进行数据序列化
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)