我正在嘗試將一個對象注入到一個單例類實現中。這樣在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()並獲得一個單例對象。
任何有關同樣的反饋將不勝感激。