Здесь у меня есть одно сомнение с весной singleton object.spring singleton состояние объекта
Spring will create atleast one object per bean definition depending on the scope. for singleton scope, you will get only one object per bean definiton.
Как весенний контекст предоставит нам экземпляр singleton, то почему я не могу поделиться с ним тем же самым сеансом.
Код ниже дают ошибку:
Throw null pointer error. org.hibernate.TransactionException: Transaction not successfully started
при попытке получить доступ к той же сессии экземпляра. даже экземпляр сеанса имеет значение null.
В основной метод
public static void main(String[] args)
{
TestDao dao = (TestDao) ApplicationContext.getInstance().getBean(DaoType.TestDao.toString());
dao.startOperation();
for(Test test:testList)
{
saveIsBean(test,true)
}
dao.endOperation();
}
Этот метод сохранения данных, если сеанс открыт, то использовать его.
private void saveIsBean(IsBean isBean,boolean isSessionAlreadyOpen) throws NTException
{
TestDao dao = (TestDao) ApplicationContext.getInstance().getBean(DaoType.TestDao.toString());
if(isSessionAlreadyOpen)
{
//dao.startOperation(); If I start session again then it works.
dao.getSession().saveOrUpdate(isBean); //Throw null pointer error. org.hibernate.TransactionException: Transaction not successfully started
}
else
{
dao.saveOrUpdate(isBean);
}
}
public void startOperation() throws HibernateException {
session = HibernateFactory.openSession();
transaction = session.beginTransaction();
}
Если я начинаю сеанс снова или передать один экземпляр сеанса в методе, то он работает нормально, но я не понимаю, почему он не работает. экземпляр singleton не имеет такого же состояния в контексте весны !!
Заранее спасибо
контекст приложения весна никогда не бутстрапированная. –