leer - spring boot config properties example
Spring Boot Application no lee el archivo application.properties cuando usa la prueba de Maven (4)
Asegúrese de que su anotación @ConfigurationProperties esté configurada con el mismo prefijo que el que esté utilizando en su archivo de configuración (application.config)
ACTUALIZAR:
Me di cuenta de un par de cosas ahora. Mi archivo application.properties se está cargando correctamente porque verifiqué a través de la ruta / env (gracias Dave) que mis propiedades DB están siendo cargadas. El problema parece ser que cuando lo ejecuto utilizando el complemento maven Spring Boot, no puede inicializar mi dataSource.
mvn spring-boot:run
Esto hace que mi aplicación explote con errores porque otros beans no se pueden inicializar. Lo curioso es que funciona bien desde Eclipse.
Tengo una clase llamada DataService que extiende JdbcTemplate. En mi constructor de DataService, inyecto el Datasource.
@Component
public class DataService extends JdbcTemplate {
@Autowired
public DataService(DataSource dataSource){
super(dataSource);
}
...more custom methods
}
Uso esta clase DataService en otros beans para realizar operaciones DB. Mi DataSource está definido en mi archivo application.properties
spring.datasource.url: jdbc:h2:tcp://localhost/~/testdb2
spring.datasource.driverClassName: org.h2.Driver
Esta es mi clase Application.java
@Configuration
@ComponentScan
@EnableAutoConfiguration
@EnableWebMvcSecurity
@EnableAsync
@EnableScheduling
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
Primero me di cuenta de esto cuando estaba intentando ejecutar pruebas jUnit de Maven usando
mavent test
Pensé que solo tenía que ver con la forma en que estaba ejecutando los casos de prueba junit, sin embargo, también está ocurriendo cuando intento simplemente ejecutar la aplicación utilizando maven.
Mi clase de prueba JUnit4 se define de la siguiente manera:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes={Application.class})
@WebAppConfiguration
public class QuestionRepositoryIntegrationTests {
...methods
}
Utilicé el ejemplo de Spring Boot how-to docs ( http://projects.spring.io/spring-boot/docs/docs/howto.html )
Cuando ejecuto esta clase JUnit desde Eclipse, funciona bien. Cuando se ejecuta desde maven, comienza a actuar como lo describí anteriormente.
Esto funciona para mí:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = TestApplication.class,
initializers = ConfigFileApplicationContextInitializer.class)
public class SomeTestClass {
...
}
Intente definir la etiqueta <resources>
en la sección de compilación en su pom, estableciendo la ruta para el directorio de recursos donde se encuentra application.properties
:
<build>
<resources>
<resource>
<directory>resources</directory>
<targetPath>${project.build.outputDirectory}</targetPath>
<includes>
<include>application.properties</include>
</includes>
</resource>
</resources>
</build>
Puede configurar su fuente de datos principal de la siguiente manera, estoy usando mysql aquí. Pero puedes usar tu propio origen de datos. puede configurar lo siguiente en su application.properties dentro de src / main / resources
spring.datasource.url = jdbc:mysql://localhost:3306/dsm
spring.datasource.username = root
spring.datasource.password = admin123
spring.datasource.testWhileIdle = true
spring.datasource.validationQuery = SELECT 1
spring.jpa.show-sql = true
spring.jpa.hibernate.ddl-auto = update
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
Para ejecutar la prueba dentro de su aplicación, puede usar el mismo origen de datos o crear application-test.properties dentro de src / test / resources y es posible configurar el origen de datos de prueba allí.