当前位置: 首页 >Java技术 > spring ioc 单例 和多例模式学习

spring ioc 单例 和多例模式学习

spring ioc中默认为单例,当scope设置为prototype的时为多例,设置为多例时,对象的创建时发生改变,无论lazy-init为什么值,都是在context.getBean();时创建对象


多例模式例子:

package zju_001.maven_test_1;import org.springframework.context.ApplicationContext;import org.springframework.context.annotation.Scope;import org.springframework.context.support.FileSystemXmlApplicationContext;import org.springframework.stereotype.Component;  @Component(value="user")  //<bean id="user" class="">  //@Scope(value="prototype") //创建多实例 public class User {	private String name;	private int id;	 public void fun() {		 System.out.println("dao");	 }	public User() {	System.out.println("初始化User实例");	}		public String getName() {		retu name;	}	public void setName(String name) {		this.name = name;		System.out.println("name is"+ name);	}	public int getId() {		retu id;	}	public void setId(int id) {		this.id = id;		System.out.println("id is "+id);	}		public static void main(String[] args) {		System.out.println("加载context文件");		ApplicationContext context = new FileSystemXmlApplicationContext("src\\bean1.xml");		System.out.println("第1个ioc");		User u1=(User) context.getBean("user");		u1.setId(123);				System.out.println("第2个ioc");		User u2=(User) context.getBean("user");		u2.setId(456);				System.out.println("u1的id是:"+u1.getId());		System.out.println("u1的id是:"+u2.getId());							}	}

输出为:

第1个ioc初始化User实例id is 123第2个ioc初始化User实例id is 456u1的id是:123u2的id是:456

单例模式情况:

没有设置:@Scope(value="prototype")

输出为:

初始化User实例第1个iocid is 123第2个iocid is 456u1的id是:456u1的id是:456

可以看到差别是,单例模式中, 初始化在加载context文件时发生,而多例模式中,初始化在ioc是发生。

并且,单例模式 两次给不同的变量进行注入后,实际上两个变量指向同一个实例,改变其中一个另一个也改变。


作者:var1994
来源链接:https://blog.csdn.net/var1994/article/details/80255693

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaclub.cn/java/113162.html

标签:SpringIOC
分享给朋友: