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中,单例模式可以通过多种方式来...
"浅谈Java中单例设计模式之构造方法私有化" 单例设计模式是 Java 中一种常用的设计模式,核心思想是将类的构造方法私有化,以控制实例化对象的产生。这种模式可以确保在程序中只有一个实例化对象存在,这对控制对象...
单例模式是软件设计模式中的一种,它的核心思想是确保某个类在整个应用程序中只有一个实例存在。在PHP中,单例模式常用于管理共享资源,如数据库连接或全局配置,以优化性能并提供统一的访问入口。 单例模式的实现...
单例模式的主要目的是限制一个类的实例化次数为一次,同时提供一个全局访问点来获取这个唯一实例。这在系统中某些资源只能有一个实例时非常有用,比如数据库连接、日志对象等。 #### 2. 传统实现方式的问题 在C++...
在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. ...
【标题】:“运行中单侧中主门或者中调门突然关闭.doc” 【描述】:文档涉及的内容是处理运行中的电力设备,特别是当单侧中主门或中调门突然关闭时的操作流程和注意事项,以及相关系统(DEH、MEH、BPC、EH)的故障...
这里提到的“验证单例多用构造方法”可能是指 Spring MVC 中单例 Bean 的生命周期问题。Spring 管理的 Bean 默认是单例模式,即在整个应用中只有一个实例。当 Bean 采用构造方法初始化时,无论多少次请求,构造函数...