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定义的方法
浙公网安备 33010602011771号