У меня есть следующий сценарий:
Бин Автоматическая связь в двух классах, я заполняю бин в одном классе, затем проверяю бин во втором классе, он не заполняется.Принимая во внимание, что когда я добавляю получатель в класс, где я заполнил компонент, и вызываю получатель, он возвращает заполненный компонент.Почему я не могу получить доступ к этому bean-компоненту напрямую в другом классе, если он не заполнен, поскольку он действует как одиночный элемент в весеннем контексте?
Тестовый класс JUnit4, загружающий весенний контекст из xml-файла:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "/spring/test-main-context.xml" })
public class MyTests {
@Autowired
MyObject myObject;
@Autowired
MyUtils myUtils;
@Test
public void testingContext() {
myUtils.setMyObjectFromDB();
System.out.println(myUtils.getMyObject().getId());
System.out.println(myObject.getId());
}
}
MyUtils:
public class MyUtils {
@Autowired MyObject myObject;
public void setMyObjectFromDB() {
MyObject myDBObject = new MyObject();
//
// getting myObjectFromDB;
//
myObject = myDBObject;
}
public MyObject getMyObject() {
return myObject;
}
}
В тестовом классе myUtils.getMyObject().getId()
возвращает правильный идентификатор, но во второй строке myObject.getId()
возвращает ноль.
ПочемуMyObject, который установлен в классе MyUtils и @Autowired в обоих классах, не обновляется, когда я обращаюсь к нему напрямую в тестовом классе.