BeanDefinition中的scope、lazyInit和dependsOn属性的组合效果
进阶版来源:meituan中级工程师BeanDefinition属性配置Spring Bean作用域Spring延迟初始化Spring Bean依赖顺序
草稿
答案解析
这几个属性都是 Spring 在创建 Bean 时用来控制生命周期和依赖关系的。
scope 决定 Bean 的作用域,最常见的是 singleton 和 prototype。
singleton:容器中只创建一个实例,默认作用域。 prototype:每次从容器获取 Bean 都会创建一个新实例。 Web 环境下还有 request、session 等作用域。
lazyInit 表示是否懒加载,主要影响单例 Bean 的创建时机。
lazyInit=false,默认情况,非懒加载的单例 Bean 会在容器启动阶段创建。 lazyInit=true,单例 Bean 不会在容器启动时创建,而是在第一次 getBean 或被其他 Bean 依赖时才创建。 对 prototype 来说,本身就是每次获取时才创建,所以 lazyInit 基本没有明显意义。
dependsOn 表示当前 Bean 初始化之前,必须先初始化指定的 Bean。它强调的是初始化顺序,不是属性注入关系。
比如:
```java
登录后查看完整内容
