Я создаю Spring ApplicationContext с помощью кода, подобного следующему:
public static AnnotationConfigWebApplicationContext startContext(String activeProfile,
PropertySource<?> propertySource, Class<?>... configs) {
AnnotationConfigWebApplicationContext result = new AnnotationConfigWebApplicationContext();
if (propertySource != null) {
result.getEnvironment().getPropertySources().addLast(propertySource);
}
if (activeProfile != null) {
result.getEnvironment().setActiveProfiles(activeProfile);
}
result.register(configs);
result.refresh();
return result;
}
В тестовом классе я называю это так:
@RunWith(SpringJUnit4ClassRunner.class)
class FunctionalTest {
private ApplicationContext appContext;
@BeforeEach
void init() {
appContext = Utils.startContext("functionalTest", getPropertySource(),
BaseConfig.class, MyApplication.class, StorageTestConfig.class);
}
}
Работает нормально, без проблем.
Теперь я пытаюсь сделать то же самое, но с помощью аннотаций:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {BaseConfig.class, MyApplication.class, StorageTestConfig.class},
loader = AnnotationConfigContextLoader.class)
@ActiveProfiles("functionalTest")
@PropertySource(value = "classpath:test-context.properties")
class FunctionalTest {
@Autowired
private ApplicationContext applicationContext;
...
}
И это вообще не работает. applicationContext
не подключается автоматически, бины из конфигурацийтоже.Можете ли вы сказать мне, что, возможно, я делаю неправильно?
Почему я хочу переключиться с кода на аннотации: я хочу иметь возможность автоматически связывать бины из конфигов.Теперь (в кодовом виде создания контекста) я должен написать что-то вроде appContext.getBean("jdbcTemplate", JdbcTemplate.class)
в тестовых методах.Будет здорово, если я смогу написать
@Autowired
private JdbcTemplate jdbcTemplate;
, и это будет работать :) 1021 *