spring 单例多例,默认,懒加载,初始化调用

简介: (1)spring 默认是单例, 单例情况下:所有线程对于同一个类共同拥有一个对象,此时如果在类里面创建一个类变量如下 由于所有线程共享一个类对象,所以也共享一个类变量,每次请求都会增加 @Controller@RequestMapping("/user")public class User { private int i=0;//类变量 @RequestMapp

(1)spring 默认是单例,

单例情况下:所有线程对于同一个类共同拥有一个对象,此时如果在类里面创建一个类变量如下

由于所有线程共享一个类对象,所以也共享一个类变量,每次请求都会增加

@Controller
@RequestMapping("/user")
public class User {
	
	private int i=0;//类变量
	
	@RequestMapping("/list.shtm")
	public String list()
	{
		i++;
		System.out.println("此变量会一直增加"+i);
		return "";
	}

}

(2)spring 默认不是懒加载

    当spring不是懒加载时,项目启动,spring 初始化,spring 会把所有的 扫描包下的 ,所有带spring 注解(@Component、@Repository、@Service、@Controller)的类  都初始化,初始化时,会调用默认构造方法,即 空的构造方法,当定义了public AA(){   代码块  }   空构造方法时,就会自动执行空构造方法中的语句,当在类中加入非空构造方法,spring会报错误,找不到合适的构造方法。

   当spring 设置了default-lazy-init="true",即懒加载时,spring并不会主动初始化带注解的类,由于在controller中会注入 service层的类,由于,controller层的spring-mvc 不是懒加载,所以,当在controller中注入service时,就会初始化此service类。即调用到谁初始化谁。


目录
相关文章
|
2月前
|
XML Java 数据格式
Spring IoC容器初始化过程(xml形式)
Spring IoC容器初始化过程(xml形式)
44 0
|
3月前
|
Java Spring 容器
深入Spring原理-4.Aware接口、初始化和销毁执行顺序、Scope域
深入Spring原理-4.Aware接口、初始化和销毁执行顺序、Scope域
65 0
|
5月前
|
设计模式 XML Java
Spring的生命周期及Spring Bean单例和多例---超详细教学
Spring的生命周期及Spring Bean单例和多例---超详细教学
181 0
|
1月前
|
Java Spring 容器
【Spring源码】单例创建期间进行同步可能会导致死锁?
通过这个标题我们就可以思考本次的阅读线索了,看起来可以学到不少东西。1. 旧代码的死锁是怎么产生的。2. 贡献者通过改变什么来解决本次PR的问题呢?而阅读线索2的答案也显而易见,就是上文提到的通过后台线程来创建Micrometer单例...
40 3
|
2月前
|
存储 设计模式 前端开发
Spring5源码(53)-DispatcherServlet初始化
Spring5源码(53)-DispatcherServlet初始化
44 0
|
3月前
|
缓存 Java 测试技术
Spring5源码(22)-Spring通过有参构造方法实例化单例bean
Spring5源码(22)-Spring通过有参构造方法实例化单例bean
49 0
|
3月前
|
缓存 Java Spring
Spring5源码(21)-Spring通过无参构造方法实例化单例bean
Spring5源码(21)-Spring通过无参构造方法实例化单例bean
32 0
|
3月前
|
缓存 Java Spring
Spring5源码(20)-Spring实例化单例bean的准备工作
Spring5源码(20)-Spring实例化单例bean的准备工作
13 0
|
3月前
|
缓存 Java 测试技术
Spring5源码(19)-Spring从缓存中获取单例bean
Spring5源码(19)-Spring从缓存中获取单例bean
22 0
|
3月前
|
XML Java 数据格式
Spring5源码(15)-IoC容器启动过程简析及XmlBeanFactory初始化
Spring5源码(15)-IoC容器启动过程简析及XmlBeanFactory初始化
30 1