IOC的基本流程:
- 启动项目后,根据配置文件中配置的扫描路径,扫描带有注解的类,将类的基本信息(构造方法、属性、方法)封装到一个类中,存储到一个map里;
- 需要获取一个bean的时候,首先去查询该类是否已经实例化,如果没有则去检测是否定义;
- 如果定义了该类,但是没有实例化,则通过反射将类实例化,并且存储到一个实例化map中;
- 没有则抛出异常。
如果bean的scope是singleton,则会重用这个bean不再重新创建,将这个bean放到一个map里,每次用都先从这个map里面找。如果scope是session,则该bean会放到session里面。