spring中配置的单例实例中,如果需要每次获取新的属性对象,有两种方式。1、采用配置文件中的lookup-method元素 2、实现BeanFactoryAware接口。
public interface AxeInter { public void chop(); }
public class StoneAxe implements AxeInter { @Override public void chop() { System.out.println("石头斧头"); } }
<bean id="axe" class="springTest.impl.StoneAxe" scope="prototype"> </bean>
- 采用配置文件中的lookup-method元素
public abstract class UserService2 { public abstract AxeInter getAxe(); }
注意:没有get、set方法
<bean id="userService2" class="springTest.impl.UserService2"> <lookup-method name="getAxe" bean="axe"/> </bean>
public class CopyOfSpringTest1 { private ApplicationContext context = null; @Before public void before(){ context = new ClassPathXmlApplicationContext("applicationContext.xml"); } @Test public void testMoreInstanceInSingleInstance(){ UserService2 userService = context.getBean("userService2", UserService2.class); System.out.println(userService); System.out.println(userService.getAxe()); UserService2 userService2 = context.getBean("userService2", UserService2.class); System.out.println(userService2); System.out.println(userService2.getAxe()); } }
2.实现BeanFactoryAware接口。
public class UserService implements BeanFactoryAware{ private AxeInter axe; private BeanFactory beanFactory; public AxeInter getAxe() { this.axe = (AxeInter)beanFactory.getBean("axe"); return axe; } @Override public void setBeanFactory(BeanFactory beanFactory) throws BeansException { this.beanFactory = beanFactory; } }
注意:没有axe的set方法
<bean id="userService" class="springTest.impl.UserService"> </bean>
@Test public void testMoreInstanceInSingleInstance(){ UserService userService = context.getBean("userService", UserService.class); System.out.println(userService); System.out.println(userService.getAxe()); UserService userService2 = context.getBean("userService", UserService.class); System.out.println(userService2); System.out.println(userService2.getAxe()); }
相关推荐
### Java多线程编程环境中单例模式的实现 #### 概述 单例模式是一种常用的软件设计模式,它确保一个类只有一个实例,并提供一个全局访问点。在Java中,单例模式的应用非常广泛,特别是在资源管理、日志记录、...
### JAVA中单例模式的几种实现方式 #### 1. 线程非安全的基本实现方式 单例模式是设计模式中的一种常用形式,它的主要目的是确保一个类只有一个实例,并提供一个全局访问点。在Java中,单例模式可以通过多种方式来...
单例模式是软件设计模式中的一种,它的核心思想是确保某个类在整个应用程序中只有一个实例存在。在PHP中,单例模式常用于管理共享资源,如数据库连接或全局配置,以优化性能并提供统一的访问入口。 单例模式的实现...
单例模式的主要目的是限制一个类的实例化次数为一次,同时提供一个全局访问点来获取这个唯一实例。这在系统中某些资源只能有一个实例时非常有用,比如数据库连接、日志对象等。 #### 2. 传统实现方式的问题 在C++...
单例设计模式在Java中是一种广为应用的设计模式,它的核心在于将类的构造方法私有化,从而实现对类实例化过程的控制。这种模式确保了在一个应用程序中,某个类只能产生一个实例对象,有助于限制对象的数量,并且能够...
在spring中最核心的就是IOC容器,默认采用的是通过单例的模式来进行管理我们注入到Ioc中的bean(当然我们也是可以修改成其他的模式,暂且不讨论),在spring中单例模式是采用注册的方式来实现的单例模式,所以我也是...
单例模式是软件设计模式中的一种经典模式,用于确保一个类只有一个实例,并提供一个全局访问点。在Java中,有多种实现单例模式的方法,每种都有其特点和适用场景。接下来,我们将深入探讨这些实现方式。 首先,我们...
Android应用正确的退出方式(单例模式)
java 中单例模式是保证一个类仅有一个实例,并提供一个访问它的全局访问点的设计模式。单例模式有以下特点:单例类只能有一个实例,单例类必须自己自己创建自己的唯一实例,单例类必须给所有其他对象提供这一实例。 ...
### py源码实例:Excel处理实例——单工作簿拆分至多工作簿中的单表 #### 背景介绍 在日常办公自动化处理任务中,经常需要对Excel文档进行批量处理,例如数据清洗、格式调整等。对于某些特定场景,如需要将一个较...
4. **拒绝新实例**:如果发现已有实例,`QTSingleApplication`的`isRunning()`方法返回true,这时新实例可以决定是否继续执行,通常选择退出。 在提供的源码中,可能对这两种方案进行了修改,例如优化了文件锁的...
Kotlin 中单例模式是指在应用程序中确保某个类仅有一个实例,并提供一个全局访问点的机制。单例模式是一种常用的设计模式,在 Java 和 Kotlin 中都有多种实现方式。下面我们将对比 Kotlin 中单例模式和 Java 中单例...
本文实例讲述了C#中单例的实现方法。分享给大家供大家参考。具体实现方法如下: 代码如下: #region “实现这个窗口类的单例,单例类常用于被主窗口以show()方法打开的窗口,使用单例后只会打开一个此类的对象” /...
在Python编程中,单例模式是一种设计模式,它限制了类的实例化过程,确保一个类只有一个实例,并提供全局访问点。这种模式在需要频繁实例化然后销毁的对象,或者创建对象需要消耗大量资源的场景下非常有用,因为它...
Spring中单例的概念限于Spring上下文中,遵守约定 内部bean适用于setter注入和构造器注入,内部bean不能被复用 SpEL表达式 3. 高级装配 4 种自动装配 byName, byType, contructor, autodetect 可以在一个应用上下...
单例模式是软件设计模式中的一种,其核心思想是确保一个类在整个应用程序中只存在一个实例。这种模式常用于创建那些需要全局访问且资源管理的类,如线程池、缓存、对话框等。在Java中,实现单例模式主要有三种方式:...
在SQL Server中,单引号(')是一个特殊字符,用于定义字符串常量。当在构建动态SQL语句时,如果查询条件中的变量包含了单引号,不进行特殊处理会导致SQL语法错误。以下是对标题和描述中所述知识点的详细解释: 1. ...
本篇文章将详细讨论运行中单侧中主门或中调门突然关闭的紧急情况处理流程,以及在此类故障发生时,如何通过正确的步骤和操作来降低设备损害、保障机组稳定运行。 发电机组在运行中若遭遇单侧中主门或中调门意外关闭...
这里提到的“验证单例多用构造方法”可能是指 Spring MVC 中单例 Bean 的生命周期问题。Spring 管理的 Bean 默认是单例模式,即在整个应用中只有一个实例。当 Bean 采用构造方法初始化时,无论多少次请求,构造函数...