property leer example common application spring maven junit4 spring-boot

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í.