当我们写好spring配置文件,启动项目后,框架会先按照配置文件找到要scan的包,然后解析包里面的所有类,找到所有含有@bean,@service等注解的类,利用反射解析,包括构造器,方法,属性等等,然后封装成各种信息类放到一个map里。每当需要一个bean的时候,框架就会从container找是不是有这个类的定义,如果找到则通过构造器new出来(这就是控制反转,不用你new,框架帮你new),再在这个类找是不是有要注入的属性或者方法,比如标有@autowired的属性,如果有则还是到container找对应的解析类,new出对象,并通过之前解析出来的信息类找到setter方法,然后用该方法注入对象(这就是依赖注入)。如果其中有一个类container里没找到,则抛出异常,比如常见的spring无法找到该类定义,无法wire的异常
Spring 基本原理
最新推荐文章于 2021-08-07 10:19:54 发布