对象的多例和单例管理
对象的多例和单例管理:
IoC容器默认管理的Bean对象是单例的。scope="singleton".
如果希望多例:scope="prototype".
什么时候用单例,什么时候用多例?
Service,dao一般都是单例的。因为获取对象的目的是调用方法。不需要多例创建对象。
像这样的Bean,也称为无状态Bean(没有属性,或即使有属性,它的属性值也是不变的)
实体类一般都是多例的。因为使用这样的对象封装数据,不能被多线程并发操作,否则会出现线程安全问题。
像这样的Bean,也称为有状态Bean(有属性的,每次线程操作属性值往往变化的)
单例对象和多例对象什么时候创建?
单例对象是在服务器启动,构造IoC容器时就创建好了,name,我们在使用时直接从容器中获取利用,效率比较高。
多例对象每一次getBean时才创建,它是现去创建的。效率比较低,但是,对象的使用比较安全。