UPDATE:
Я понял пару вещей сейчас. Файл application.properties загружается правильно, потому что я проверил по пути /env (спасибо Dave), что мои свойства БД загружаются. Проблема заключается в том, что когда я запускаю ее с помощью подключаемого модуля Spring Boot maven, он не может инициализировать мой источник данных.
mvn spring-boot:run
Это приводит к тому, что мое приложение вызывается с ошибками, потому что другой beans не может быть инициализирован. Странно, что он отлично работает от Eclipse.
У меня есть класс под названием DataService, который расширяет JdbcTemplate. В моем конструкторе DataService я вставляю Datasource.
@Component
public class DataService extends JdbcTemplate {
@Autowired
public DataService(DataSource dataSource){
super(dataSource);
}
...more custom methods
}
Я использую этот класс DataService в другом beans для выполнения операций БД. Мой DataSource определен в моем application.properties
файле
spring.datasource.url: jdbc:h2:tcp://localhost/~/testdb2
spring.datasource.driverClassName: org.h2.Driver
Это мой класс Application.java
@Configuration
@ComponentScan
@EnableAutoConfiguration
@EnableWebMvcSecurity
@EnableAsync
@EnableScheduling
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
Я впервые понял это, когда пытался выполнить тесты jUnit из Maven, используя
mavent test
Я думал, что это просто связано с тем, как он выполнял тестовые примеры junit, но это также происходит, когда я просто пытаюсь запустить приложение с помощью maven.
Мой тестовый класс JUnit4 определяется следующим образом:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes={Application.class})
@WebAppConfiguration
public class QuestionRepositoryIntegrationTests {
...methods
}
Я использовал пример из Spring инструкций для загрузки как http://projects.spring.io/spring-boot/docs/docs/howto.html)
Когда я запускаю этот класс JUnit из Eclipse, он работает отлично. Когда он выполняется из maven, он начинает действовать, как описано выше.