spring是如何创建bean对象的
基于构造方法和set依赖注入来构造的。
spring启动时,会先创建一个spring容器,然后循环遍历扫描包下的类上有包含@Component注解的类,然后基于构造方法创建这个bean对象放入单例池中(默认单例模式)然后扫描bean对象中有@Autowired注解的对象,对其进行依赖注入,从单例池中找。单例模式是基于单例池,用一级缓存来实现的,是一个map接口的实现类。
扫描是基于反射来实现的
其中还有bean定义 bean工厂的流程。
UserService类-->无参的构造方法-->对象-->依赖注入-->初始化前(@PostConstruct)-->初始化(InitializingBean)-->初始化后-->放入单例池中-->Bean对象
UserService类-->无参的构造方法-->普通对象-->依赖注入-->初始化前(@PostConstruct)-->初始化(InitializingBean)-->初始化后(AOP)-->代理对象-->放入单例池中-->Bean对象
bean的实例化就是用基于无参构造方法获得的对象
bean的初始化就是执行实例化这个对象中的某一个方法,例如执行实现InitializingBean接口的方法(实现InitializingBean接口),或者是bean定义的方法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?