Spring. Bean对象与设计模式饿/懒汉式之区别

发布时间:2026/5/29 1:05:19

Spring. Bean对象与设计模式饿/懒汉式之区别 要区分**“设计模式中的饿汉/懒汉单例”和“Spring中Bean的饿汉/懒汉加载”**——两者逻辑类似提前创建vs延迟创建但场景和代码写法完全不同一、设计模式饿汉式/懒汉式单例自己写单例类是手动控制一个类的对象只有1个代码是自己写的单例逻辑1. 饿汉式单例类加载时就创建对象java// 饿汉式类加载时直接创建唯一实例public class SingletonHungry {// 1. 私有构造防止外部newprivate SingletonHungry() {}// 2. 类加载时就初始化实例饿汉提前准备好private static final SingletonHungry INSTANCE new SingletonHungry();// 3. 提供获取实例的方法public static SingletonHungry getInstance() {return INSTANCE;}}2. 懒汉式单例第一次用的时候才创建对象java// 懒汉式第一次调用getInstance时才创建实例public class SingletonLazy {// 1. 私有构造private SingletonLazy() {}// 2. 先声明实例不初始化private static SingletonLazy INSTANCE;// 3. 第一次调用时才创建实例懒汉延迟准备public static synchronized SingletonLazy getInstance() {if (INSTANCE null) {INSTANCE new SingletonLazy();}return INSTANCE;}}二、Spring中Bean的饿汉/懒汉加载容器控制Bean创建时机是Spring容器帮你管理Bean的创建时间不需要自己写单例逻辑用注解控制1. 饿汉式加载Spring默认java// 容器启动时立即创建DeptController这个BeanRestControllerpublic class DeptController {public DeptController() {System.out.println(DeptController被创建了饿汉式);}}2. 懒汉式加载加Lazyjava// 容器启动时不创建第一次用的时候才创建RestControllerLazy // 懒汉式加载public class DeptController {public DeptController() {System.out.println(DeptController被创建了懒汉式);}}核心区别维度 设计模式的饿汉/懒汉单例 Spring中Bean的饿汉/懒汉加载目的 保证“类的对象只有1个” 控制“Bean的创建时机”底层还是单例代码逻辑 自己写私有构造、静态实例、get方法 用Lazy注解容器自动管理适用场景 自己手动管理单例对象 Spring项目中由容器管理Bean

相关新闻