我正在尝试将一个对象注入到一个单例类实现中。这样在Singleton类中使用ApplicationContextAware
public class MyObjectWrapper implements ApplicationContextAware {
public static MyObject myObject;
private ApplicationContext ctxt;
private MyObjectWrapper() {}
public static synchronized MyObject getImpl() {
if (myObject!=null)
return myObject;
MyObjectWrapper myObjectWrapper=new MyObjectWrapper();
this.myObject = (MyObject) myObjectWrapper.getCtxt().getBean("myobject");
return myObject;
}
@Override
public void setApplicationContext(ApplicationContext arg0)
throws BeansException {
logger.debug("setApplicationContext - " + arg0);
this.ctxt = arg0;
}
public ApplicationContext getCtxt() {
return ctxt;
}
public void setCtxt(ApplicationContext ctxt) {
this.ctxt = ctxt;
}
}
它不工作的东西,这是我的呼唤MyObjectWrapper.getImpl()我得到一个空的MyObject。我有myobject和MyObjectWrapper bean条目。
我知道使用的getBean是不是最好的做法,但在这个特殊的例子是可以接受的?缺点是什么?如果不在这里,我将在我的Main方法中做类似的getBean调用。
我可以在我的主要方法(我访问那里的应用程序上下文)做的getBean,但我只是想这包装类来负责建立这一单的。需要MyObject的对象可以调用MyObjectWrapper.getImpl()并获得一个单例对象。
任何有关同样的反馈将不胜感激。