SpringBoot原理之一_类加载顺序、SpringBoot启动过程

本文探讨了SpringBoot的类加载顺序,通过在Bean构造函数中使用System.out.println进行观察。SpringBoot的main方法中可以访问IOC容器中的Bean,但必须在run方法之后通过ApplicationContext获取。由于成员变量加载时Spring尚未启动,注解注入无效。JVM的类加载过程包括加载、初始化和实例化,而注解的作用依赖于SpringIOC容器的扫描。@DependOn和@Order注解与加载顺序相关。
摘要由CSDN通过智能技术生成

1.SpringBoot的类加载顺序怎么能知道?
在Bean的默认构造函数里面使用System.out.println就能知道创建顺序。

2.一个问题:SpringBoot的main函数中能够使用IOC容器中的Bean吗?
可以,但不能是通过注解注入的,只能是在run程序之后,通过ApplicationContext获取的。
这要搞清楚SpringBoot的启动过程,连Tomcat都是在run程序之后创建的,Spring容器更是之后了。
在启动类中用注解为成员变量注入值,由于先加载成员变量,之后加载静态的main函数,成员变量被加载并默认初始化时,main函数还没运行,Spring框架都还没启动,自然无法处理启动类中的注解。【注意,这与启动类中成员变量是否被static修饰无关,根本原因是启动类中成员变量被创建时,Spring框架还没启动】【另外,成员变量被加载就是被创建吗?从表现上看不是这么回事,因为构造函数中的System.out.println方法没有执行,可见加载只是创建引用变量,默认初始化只是指向默认的null对象,此时并没有创建对象,只有new才会创建对象。注意:JVM加载类并不等于】

JVM加载类的过程:加载、初始化、实例化,实例化才是调用new构造函数
https://blog.csdn.net/justloveyou_/article/details/72466416

public class T
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值