我正在尝试将一个对象注入到单例类实现中。像这样的东西
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 调用。
我可以在我的 main 方法中做一个 getBean(我正在那里访问应用程序上下文),但是我只是希望这个 Wrapper 类负责创建这个单例。需要 MyObject 的对象只需调用 MyObjectWrapper.getImpl() 即可获得一个单例对象。
任何对此的反馈将不胜感激。