用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。需要实现Cloneable接口,重写clone()方法。
//克隆过程内部的数组和引用对象不会拷贝,其他的原始基本类型和String类型会被拷贝。
//方法一:重写clone方法,将对象的所有属性都手动克隆一下。
//方法二:序列化和反序列化,涉及IO流,效率不高。
//克隆只是在堆内存进行操作,不会执行构造函数。
Spring中依赖注入的默认对象为单例形式,@Scope(“prototype”)注解可以将其改变为原型模式。
改变底层(如service层)的对象为原型模式时,同时改变上层调用层(如controller层)的调用方式,原型模式才会生效。修改Autowired->Autowired+Qualifier或者修改Autowired->Resource。因为Autowired按照类型进行注入,当单例模式时只有一个对象实例就不会出现问题,但是当改为原型模式时,spring就不知道选择哪个实例了,可以通过加上Qualifier注解指定名字,也可以通过Resource注解指定名字。
原文:https://www.cnblogs.com/jiezao/p/13280200.html