0

I have application.properties with that code:

spring.config.additional-location=file:///C:/Users/user/Desktop/project/cfg.properties spring.datasource.driver-class-name=oracle.jdbc.OracleDriver spring.jpa.database-platform=org.hibernate.dialect.Oracle10gDialect spring.jpa.hibernate.ddl-auto=validate spring.jpa.show-sql=true 

and in cfg.properties it looks like that:

spring.datasource.url=jdbc:oracle:thin:@correctDbUrl spring.datasource.username=user spring.datasource.password=pass 

I think there is something wrong with the path - can't it be outside the project or what happened? This is an error (url is correct, it works when placed directly in application.properties):

 Description: Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. Reason: Failed to determine suitable jdbc url 

Gradle:

 buildscript { ext { springBootVersion = '2.0.3.RELEASE' } repositories { maven { url "someRepository" } mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") } } apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'org.springframework.boot' apply plugin: 'io.spring.dependency-management' group = 'com.abc' version = '0.0.1-SNAPSHOT' sourceCompatibility = 1.8 repositories { maven { url "someRepository" } mavenCentral() } dependencies { compile('org.springframework.boot:spring-boot-starter-web') compileOnly('org.projectlombok:lombok') testCompile('org.springframework.boot:spring-boot-starter-test') compile(group: 'com.hynnet', name: 'oracle-driver-ojdbc6', version: '12.1.0.1') compile("org.springframework.boot:spring-boot-starter-data-jpa") } 
4
  • spring.config.location works like that, spring.config.additional-location should add properties to original properties file. But i've tried to copy the whole application.properties to cfg.properties and it still doesn't work Commented Jul 17, 2018 at 9:21
  • Try removing jpa dependency from gradle. you have a conflict. Commented Jul 17, 2018 at 9:22
  • but it works when configuration is in application.properties. Commented Jul 17, 2018 at 9:29
  • But now it doesnt even find your application.properties. It goes straight to your cfg file Commented Jul 17, 2018 at 9:39

1 Answer 1

2

Set the following environment variable.

SET SPRING_CONFIG_LOCATION=classpath:/application.properties,file:C:/Users/user/Desktop/project/cfg.properties 

you can remove "spring.config.additional-location" from the property file.

Sign up to request clarification or add additional context in comments.

6 Comments

It works, thank you. But shouldn't that solution override the application.properties instead of adding properties to it from another files? And one more question - what if I have more projects with other configurations? am I forced to change this environment variable every time?
If you are testing your code in eclipse. You can set environment in the eclipse runtime configuration for that particular application. Or you can start the application by giving --spring.config.location parameter on application startup. you can refer this link docs.spring.io/spring-boot/docs/current/reference/html/…
Ok, thanks. ;) But I still doesn't know why the additional location doesn't work and why spring.config.location doesn't override application.properties. ;)
@Helosze spring.config.location has overridden the default behavior. Since we have provided "classpath:/application.properties" again in the environment variable. It's able to get those values.
You can use @PropertySource("file:${external.config.location}") in the application configuration class. Then give external.config.location=C:/Users/user/Desktop/project/cfg.properties in your application.properties
|

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.