`
Elvis_Wu
  • 浏览: 51027 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Spring的singleton模式

    博客分类:
  • JAVA
阅读更多
Compnay类
package ioc.demo;

public class Company {
	private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}


Spring的applicationContext.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
   
	<bean id="company" class="ioc.demo.Company">
		<property name="name" value="enrising"/>
	</bean>
</beans>


运行的Demo:
package ioc.demo;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Demo {
	public static void main(String[] args) {
		ApplicationContext context = new ClassPathXmlApplicationContext(
				"applicationContext.xml");
		Company c = (Company)context.getBean("company");
		c.setName("Intasect");
		Company c2 = (Company)context.getBean("company");
		System.out.println(c2.getName());
	}
}


运行结果:Intasect

将Demo类修改一下:
package ioc.demo;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Demo {
	public static void main(String[] args) {
		ApplicationContext context = new ClassPathXmlApplicationContext(
				"applicationContext.xml");
		Company c = (Company)context.getBean("company");
		c.setName("Intasect");
		
		ApplicationContext context2 = new ClassPathXmlApplicationContext(
		"applicationContext.xml");
		Company c2 = (Company)context2.getBean("company");
		System.out.println(c2.getName());
	}
}


运行结果:enrising

比较两次运行结果,得出结论:同一个ApplicationContext,两次getBean()取得的是同一个对象的引用。不同的ApplicationContext,两次getBean()取得的是不同的对象。
分享到:
评论

相关推荐

    通俗易懂spring之singleton和prototype.docx

    Singleton模式意味着每个Bean在Spring容器中只会存在一个实例。当你通过`ApplicationContext`获取一个配置为`scope="singleton"`的Bean时,无论你调用`getBean`多少次,都会返回同一个对象实例。例如,在`UserDao`的...

    第四章:Spring AOP API 设计模式1

    5. **单例模式(Singleton)**:Spring AOP中的`SingletonTargetSource`保证了每个目标对象只被创建一次,实现了单例模式,确保在整个应用程序中只有一个共享的实例存在,提高了资源利用效率。 6. **适配器模式...

    大话设计模式--Singleton(单例模式)

    例如,Spring框架中的ApplicationContext就是通过单例模式来管理所有bean的。然而,需要注意的是,过度使用单例可能导致系统设计过于紧密,不利于测试和扩展,因此在设计时应权衡利弊。 总之,单例模式是一种常用的...

    Spring实战之Bean的作用域singleton和prototype用法分析

    `singleton`提供了单例模式的实现,确保了全局唯一性,适合状态不随时间改变的对象;`prototype`则支持按需创建新实例,适用于需要多个实例且状态可变的情况。理解并正确使用这两个作用域,能够帮助开发者更有效地...

    Spring设计思想.ppt

    其中,Spring的核心设计理念体现在对两种基本设计模式的实现上:工厂模式和单态模式。 首先,工厂模式是Spring容器的核心。Spring作为一个bean工厂,负责管理和实例化应用中的各种bean。它遵循工厂模式的原则,使得...

    设计模式之Singleton(单态)

    5. **生命周期管理**:在某些容器(如Spring框架)中,Singleton模式的生命周期可能与容器的生命周期冲突,需要谨慎使用。 6. **扩展性**:Singleton模式可能导致系统不易扩展,因为它限制了类的实例化,可能阻碍了...

    spring中的基本设计模式

    本资源是spring的小例子程序,共包括以下7个: 数据访问对象模式(DAO) 工厂模式(factory) ...单例模式(singleton) 策略模式(strategy) 模板模式(template) 另外还有一个关于动态代理的小例子

    Spring中的singleton和prototype的实现

    Singleton模式是Spring框架中最基本的bean作用域,其特点是容器中只实例化一次。无论多少次获取bean,始终返回同一个实例对象。下面是一个简单的示例代码: 首先,我们定义一个UserDao类: ```java public class ...

    Singleton 设计模式

    在现代编程实践中,特别是在使用容器(如 Spring、Guice)的情况下,Singleton 往往被推荐用依赖注入机制来代替,因为这可以提供更好的可测试性和可配置性。此外,对于资源管理,一些语言(如 Java 8)提供了内置的...

    Java EE设计模式:Spring企业级开发最佳实践

    Java EE 设计模式:Spring 企业级开发最佳实践 Java EE 设计模式是指在 Java 企业版(Java Enterprise Edition)中应用的设计模式,旨在提高软件系统的可维护性、可扩展性和可重用性。Spring 是当前最流行的 Java ...

    spring6pdf详细讲解

    在 Spring 中,GoF 之 factory 模式是指工厂模式、抽象工厂模式和简单工厂模式等。这些模式使得开发者可以编写更加灵活和可维护的代码。 在 Spring 中,JdbcTemplate 是框架的 JDBC 模块之一。 JdbcTemplate 提供了...

    Spring 5 Design Patterns.pdf

    书中通过讲解诸如代理(Proxy)、单例(Singleton)、模板方法(Template Method)等经典的设计模式来帮助读者更好地理解和运用Spring框架的功能。 #### 二、设计模式简介 设计模式是在软件开发过程中经过长时间...

    singleton demo

    Singleton模式是一种常用的软件设计模式,它保证一个类只有一个实例,并提供一个全局访问点。这个模式在许多场景下非常有用,例如管理共享资源、配置对象或者作为缓存等。本示例"SingletonDemo"将深入探讨如何在Java...

    spring架构详解 spring架构详解

    Spring框架广泛运用了多种设计模式,如工厂模式(BeanFactory)、单例模式(Singleton)、代理模式(AOP代理)、装饰器模式(BeanPostProcessor)等,这些模式的运用使得Spring具有高度的灵活性和可扩展性。...

    简单了解spring bean作用域属性singleton和prototype的区别

    单例设计模式表示一个ClassLoader中只有一个class存在,而这里的singleton则表示一个容器对应一个Bean,也就是说当一个Bean被标识为singleton时候,spring的IOC容器中只会存在一个该Bean。 prototype作用域 与...

    浅谈spring中用到的设计模式及应用场景

    5. 单例模式(Singleton Pattern) 单例模式是 Spring 框架中使用的设计模式之一。在 Spring 中,单例模式用于实现 Bean 的创建。例如,在创建 Bean 的时候,Spring 会使用单例模式来实例化 Bean,並将其存储在应用...

    浅谈Spring单例Bean与单例模式的区别

    "浅谈Spring单例Bean与单例模式的区别" 本文主要介绍了Spring单例Bean与单例模式的区别,通过对比两者的定义、实现机制和应用场景,帮助读者更好地理解这两种概念的异同。 一、单例模式的定义和实现 单例模式是一...

    高清彩版 Spring 5 Design Patterns

    单例模式(Singleton Pattern) 单例模式是一种创建型设计模式,保证一个类只有一个实例,并提供一个全局访问点。在Spring中,Bean默认是单例的,即容器只会为每一个Bean定义创建一个实例。这种模式有助于减少资源...

Global site tag (gtag.js) - Google Analytics