У меня есть FactoryBean (весна) определяется следующим образом:инъекционных издевались объектов с помощью FactoryBean
public class AMockFactoryBean extends EasyMockFactoryBean<A>{
public AMockFactoryBean() {
super(A.class);
}
@Override
public A getObject() throws Exception {
MockA a= new MockA();
a.setB(createMock(B.class));
return new MockA();
}
}
Класс А имеет объект типа B autowired:
public abstract class A {
@Autowired
protected B b;
}
MockA реализует несколько абстрактных классов и EasyMockFactoryBean использует метод Spring FactoryBean.
В моей app.xml конфигурации у меня есть:
<bean id="mockedA" class="AMockFactoryBean" />
Мой тестовый класс:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:testContext.xml")
public class ATest {
@Autowired
private A mockedA;
}
Результат: mockedA в ATEST является autowired правильно, но autowired поле Ab было установлено нулевое значение по весне. В режиме отладки я вижу, как вызывается getObject() в AMockFactoryBean и как mockedA получает экземпляр Mock для EasyMock. Но когда отладчик переходит в класс ATest, mockedA.b имеет значение null. Зачем?