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多线程编程环境中单例模式的实现
c++中单例模式对象的释放控制,txt文件格式的,哈哈哈
浅谈Java中单例设计模式之构造方法私有化.pdf
构造函数需要标记为private,单例类不能再其他类中实例化,只能被其自身实例化 2.拥有一个保存类的实例静态成员变量 3.拥有一个访问这个实例的公共的静态方法。[常用getInstance()方法进行实例化单例类,通过...
在spring中最核心的就是IOC容器,默认采用的是通过单例的模式来进行管理我们注入到Ioc中的bean(当然我们也是可以修改成其他的模式,暂且不讨论),在spring中单例模式是采用注册的方式来实现的单例模式,所以我也是...
主要介绍了C#中单例的实现方法,以实例形式分析了C#中单例的原理与实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
一个简单的java工程,包含注释,一目了然,其中包含了单例模式的所有实现方式,懒汉式,饿汉式,双重校验,枚举,静态内部类等方式实现单例。
Android应用正确的退出方式(单例模式)
py源码实例自动办公excel处理实例(单工作簿拆分到多工作簿中(单表中))提取方式是百度网盘分享地址
主要介绍了Java中单例模式详解,单例模式包括了懒汉式单例、饿汉式单例、登记式单例三种,想要了解的朋友可以了解一下。
运行中单侧中主门或者中调门突然关闭.doc
主要介绍了C#中单例模式的三种写法示例,本文分别给出代码实例,需要的朋友可以参考下
Spring中单例的概念限于Spring上下文中,遵守约定 内部bean适用于setter注入和构造器注入,内部bean不能被复用 SpEL表达式 3. 高级装配 4 种自动装配 byName, byType, contructor, autodetect 可以在一个应用上下...
主要介绍了java 中单例模式饿汉式与懒汉式的对比的相关资料,这里对这两种单例模式进行对比,希望大家能理解并应用,需要的朋友可以参考下
单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场。
主要介绍了Java中单例模式的7种写法,本文分别给出每种方式的实现代码,需要的朋友可以参考下
本文主要介绍了PHP中单例模式与工厂模式的相关知识。具有很好的参考价值,下面跟着小编一起来看下吧
主要介绍了Python设计模式中单例模式的实现及在Tornado中的应用,讲解了单例模式用于设计Tornado框架中的线程控制方面的相关问题,需要的朋友可以参考下
今天小编就为大家分享一篇关于PHP中单例模式的使用场景与使用方法讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧