【发布时间】:2017-07-05 13:28:17
【问题描述】:
我有一个如下所示的课程:
@Singleton
public class MySingletonImpl implements MySingleton{
@Override
public void init(){
...
}
@Override
public void test(){
...
}
}
它是从ApplicationComposer testng 测试中调用的,如下所示:
@Listeners(ApplicationComposerListener.class)
public class MyTest{
@EJB
MySingleton mySingleton;
@Module
@Classes(cdi=true, value={MySingletonImpl.class})
public EjbModule ejbModule() throws Exception{
return new EjbModule(new EjbJar());
}
@BeforeClass
public void setup(){
mySingleton.init();
}
@Test
public void test(){
mySigleton.test();
}
}
我在测试运行时观察到的问题是,MySingletonImpl 方法调用的MySingletonImpl 类的实例的object id 与调用init() 方法的实例不同.
这种行为看起来很奇怪。
首先,如何解决我的问题?我想在同一个对象上初始化然后调用方法,而不是同一个类的不同实例。
其次,为什么容器会实例化多个@Singletons?
【问题讨论】:
标签: java singleton testng openejb