Spring管理的对象,默认情况下,是**单例**的!
如果要修改,可以使用`@Scope("prototype")`注解组件类或`@Bean`方法。
《----单例:在任何时刻,此类型的对象最多只有1个!------》
**注意:Spring并没有使用到设计模式中的单例模式,只是管理的对象具有相同的特征。**
被Spring管理的单例的对象,默认情况下,是**预加载**的,相当于单例模式中的”饿汉式“!
如果要修改,可以使用`@Lazy`注解组件类或`@Bean`方法。
> 预加载:加载Spring环境时就会创建这些对象!与之相反的概念是单例模式中的”懒汉式“!
**单例模式(饿汉式)示例:**
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton() {}
public static Singleton getInstance() {
return instance;
}
}
**单例模式(懒汉式)示例:**
public class Singleton {
private static volatile Singleton instance;
private static final Object lock = new Object();
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
synchronized (lock) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}