Лучший способ достичь этого - через модульные тесты. Например:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = MyAppConfig.class, loader = AnnotationConfigContextLoader.class)
public class MyServiceTest {
@Autowired(required = true)
MyService myService;
@Test
public void shouldAutowire() {}
}
@ContextConfiguration может использоваться с Java конфигурации, как описано выше, или оно может ссылаться на файлы конфигурации XML. Делая это, Spring будет использоваться для ввода всех ваших зависимостей всякий раз, когда вы запускаете свои тесты. Включая «required = true» на @Autowired beans, вы гарантируете, что Spring выкинет исключение на этом этапе, и ваш тест завершится неудачно. Приведенный выше пример может не выглядеть причудливым, но он гарантирует, что будут обнаружены ошибки конфигурации. Конечно, вы можете идти дальше, и ваши тесты используют впрыскиваемые бобы. Я считаю, что это очень удобно для тестов интеграции доступа к базе данных.
Это не перехват самого процесса автомашины, но вы можете, конечно, проверить, что ваши бобы ведут себя правильно.
Вам потребуется импортировать зависимость от пружинного теста. т.е. для Maven:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
<scope>test</scope>
</dependency>
Интересно, действительно. Но почему вы считаете такой сценарий недопустимым и, таким образом, вызывают ошибку? –
Вы можете использовать прототип бокового участка в одномодовом бобах очень хорошо. Вам нужно использовать поддержку прокси-серверов Spring. – artbristol
@kocko - из-за проблем с параллелизмом, когда два потока используют singleton, а затем взаимодействуют с прототипом bean, который имеет внутреннее состояние. –