spring管理bean之间的协同方式

spring管理bean互相协同的方式 Dependency Injection(依赖注入) Constructor-based Dependency Injection(构造方法注入) Autowired注入 xml配置 Setter-based Dependency Injection(set方法注入) Autowired注入 xml配置 Method Injection(方法注入,通过代理方式注入) 通过applcationContext容器获取bean注入 Lookup Method Injection(通过@LookUp注解注入) Arbitrary Method Replacement(xml配置replace method)

March 30, 2022 · 1 min

Bean的生命周期

Bean的生命周期的完全实现需要两个阶段 容器的启动 bean的实例化过程(涵盖了bean生命周期的大部分) 容器启动阶段 重点是收集到元信息配置信息,即创建bean需要的信息(beanDefinition) 通过BeanDefinitionReader,读取到beanDefinition信息,再通过beanDefinitionRegistry,将BeanDefinition注册到其里面 // 这是 PropertiesBeanDefinitionReader 把从properties文件读取到的配置信息, // 通过 BeanDefinitionRegistry 注册 BeanDefinition的过程 AbstractBeanDefinition bd = BeanDefinitionReaderUtils.createBeanDefinition( parent, className, getBeanClassLoader()); bd.setScope(scope); // 作用域 默认singleton bd.setAbstract(isAbstract); // 是否是抽象 默认false 如果是抽象的,容器不会实例化bean,而是将beanDefinition信息作为其子类使用 bd.setLazyInit(lazyInit); // 懒加载 默认false 如果是false,容器一启动就会加载bean bd.setConstructorArgumentValues(cas); // 构造参数 bd.setPropertyValues(pvs); // 属性信息 getRegistry().registerBeanDefinition(beanName, bd); // 注册Beandefinition BeanDefinitionReader 有多种,包括: ...

March 28, 2022 · 7 min
总访问量 总访客数