У меня есть проект maven с несколькими модулями.
-web
-service
-model
Веб-модуль имеет зависимость сервиса и модели. Я пытаюсь интегрировать базу данных H2 для модульного тестирования. Проблема в том, что я не могу запустить пружинный контейнер из сервисного модуля, где есть вся логика, связанная с БД. Файл конфигурации находится в веб-модуле, и я не могу ссылаться на файл из веб-модуля.
Если я добавляю зависимость в службу для Web для получения файла конфигурации, maven жалуется на циклическую зависимость и приводит к сбою сборки.
В тестовом классе я также попытался добавить статическую конфигурацию класса, как показано ниже:
@RunWith(SpringRunner.class)
@ContextConfiguration
public class TestClass {
@Before
pulic void setup{
//do something with jdbctemplate bean
}
@Configuration
@ComponentScan(basePackages = { "com.mypackage.process.myfucntioanlity" })
static class ContextConfiguration {
@Bean(name = "jdbcTemplate")
public JdbcTemplate dataSource(@Value("driver.name") String driver,
@Value("driver.url") String url, @Value("value.username") String userName,
@Value("value.password") String password) {
BasicDataSource dataSourceConfig = new BasicDataSource();
dataSourceConfig.setDriverClassName(driver);
dataSourceConfig.setUrl(url);
dataSourceConfig.setUsername(userName);
dataSourceConfig.setPassword(password);
return new JdbcTemplate(dataSourceConfig);
}
}}
Но с учетом вышесказанного, часть конфигурации недоступна, и jdbcTemplate всегда имеет значение null.
1) Можно ли запустить контейнер Spring из веб-модуля, чтобы он также мог запускать другие необходимые зависимости?
2) Если мы должны использовать указанную выше статическую конфигурацию, как мне убедиться, что пружинный контейнер всегда запускается первым, прежде чем выполнять тестовые примеры?
3) Есть ли лучший способ сделать это? Любые ссылки / предложения по определению конфигурации приветствуются.
Заранее спасибо.