上一题下一题

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

登录后查看完整内容