У меня есть некоторые интеграционные тесты, которые должны издеваться над одним из многих компонентов в моей системе. Для этого у меня есть @Configuration
, который выглядит следующим образом:Что все правила именования @Configuration для beans?
@Configuration
public class MockContext {
@Primary
@Bean
public RealBean realBean() {
return new MockBean();
}
}
Я заметил, что этот метод привыкает, если RealBean
является Java класс без@Component
. Но если RealBean
является в @Component
, я должен изменить этот метод контекста выглядеть следующим образом:
@Configuration
public class MockContext {
@Primary
@Bean
public RealBean getRealBean() {
return new MockBean();
}
}
Может кто-нибудь объяснить, почему мне нужно изменить это имя методы и где я могу найти все эти правила? Требуется очень много времени для устранения этих проблем: «Почему мой MockContext
работает правильно?» вопросы.
FWIW, вот как я использую этот контекст в тесте:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = {RealContext.class, MockContext.class})
@WebAppConfiguration
public abstract class AbstractIntegrationTest {
И моя интеграция тест будет расширить этот класс. Я использую Spring Boot 1.2.4.RELEASE
Я боюсь, что в любом месте, где написаны такие правила. в общем, весеннюю полоску «get» от имени метода и попробуйте с верблюжьим футляром, чтобы получить экземпляр bean. – Bhupi
@Bhupi хорошо в моем втором фрагменте, который не соответствует действительности. –
У вас есть сканирование компонентов, которое вы не показываете? Кроме того, попробуйте извлечь компонент из 'MockBean' из вашего контекста. –