Следуют ли Spring любую соглашение об именах для конфигурации приложения?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Следуют ли Spring любую соглашение об именах для конфигурации приложения?

Сообщение Anonymous »

Проблема:
Конфигурация, определенная в Application.properties не переопределена переменной среды
.
Я сталкиваюсь с странной проблемой с конфигурацией пружины как конфигурация, определенная в приложении. Как упомянуто в внешней конфигурационной ОС, переменные среды, имеют приоритет над применением. Пропертизы Но это не происходит, когда конфигурация определяется как myexternal_url , но она работает, когда конфигурация определяется как my_external_url (в примере ниже, мы должны изменить конфигурацию на my_external_url in applicationprperties. Application.properties )
Пример кода -

Код: Выделить всё

@SpringBootApplication
public class ConfigApplication implements ApplicationRunner {

@Autowired private ApplicationProperties applicationProperties;

public static void main(String[] args) {
SpringApplication.run(ConfigApplication.class, args);
}

@Override
public void run(ApplicationArguments arg0) {
System.out.println("External URL = " + applicationProperties.getMyExternalUrl());
}
}
< /code>
Конфигурация бобов приложения -< /p>
@Configuration
public class AppConfig {

@Bean
@ConfigurationProperties(prefix = "")
public ApplicationProperties applicationProperties() {
return new ApplicationProperties();
}
}
< /code>
ApplicationProperties
class -

Код: Выделить всё

public class ApplicationProperties {

@Value("${myExternal_url}")
private String myExternalUrl;

public String getMyExternalUrl() {
return this.myExternalUrl;
}

public void setMyExternalUrl(String myExternalUrl) {
this.myExternalUrl = myExternalUrl;
}
}
< /code>
application.properties
:

Код: Выделить всё

myExternal_url=external_url_env_application_properties
< /code>
What could be reason for this ?
EDIT - adding gradle
Gradle configuration
plugins {
id 'org.springframework.boot' version '2.4.0-M1'
id 'io.spring.dependency-management' version '1.0.9.RELEASE'
id 'java'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

repositories {
mavenCentral()
maven { url 'https://repo.spring.io/milestone' }
}

dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
compileOnly 'org.projectlombok:lombok:1.18.6'
annotationProcessor 'org.projectlombok:lombok:1.18.6'
}

test {
useJUnitPlatform()
}
< /code>
EDIT 2
Trace log shows that myExternal_url is resolved correctly from Environment variable. Then Spring tries to resolve autowired dependencies 'applicationProperties
', вызывая AutoWireDantationBeanpostProcessor , а затем значение переопределяется по Application.properties Value (Shen Shot).
o.s.c.e.PropertySourcesPropertyResolver : Found key 'myExternal_url' in PropertySource 'systemEnvironment' with value of type String
o.s.c.e.PropertySourcesPropertyResolver : Found key 'myExternal_url' in PropertySource 'environmentProperties' with value of type String
< /code>
Изображение


Подробнее здесь: https://stackoverflow.com/questions/629 ... figuration
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»