关于spring如何做到ioc的

1.其本质都是通过读取配置文件,通过反射机制来ioc的
2.如果用注解的方式,那么所有的被注解的类都需要扫描才行,其本质还是需要读取配置文件,然后配置文件去扫描包下的类
3.所以还是得有一个配置文件,那么boot的配置文件在哪,就是启动类
4.boot启动启动类,实际是个配置类,这里等于 扫描配置文件,上面加个componentscan()即可,它会扫描所有component,controller等,将他们加载到ioc中去,同样也会扫描 配置类@configuration,它也相当于配置文件,那么疑问来了,spring应该智慧扫描一个主配置文件(启动类),他是怎么做到了的,实际上@configuration 也是一个@component 所以配置类也会加载到ioc中,只是他的作用不同,它自己会入ioc它也可以起到 配置文件的作用将它里面的对象也 入 ioc
5.简单来说,boot首先 加载启动类(主配置文件),compoentscan()必须写在主配置类上,然后他就去找带有 controller,configuration等底层都是那4个注解的类将他们注入ioc,如果找到 配置类,那么就将他也当作一个 配置文件,配置类上面 也可以有 compoentscan,mapperScan等,也相当与起到了配置文件的效果
6.只是说主配置类的优先级 高于 其他配置类,当找到其他配置类的时候,他们也可以当作 配置类来使用
7.其核心本质:就是spring的 配置文件的加载,将配置类当作配置文件即可,配置类上加compoentscan,mapperscan 就相当与配置文件里面的 那些标签

Guess you like

Origin blog.csdn.net/Chen4852010/article/details/121099973