Приложение SpringBoot-2 не загружает записи из файла bootstrap.ymlJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Приложение SpringBoot-2 не загружает записи из файла bootstrap.yml

Сообщение Anonymous »

Нужны ваши данные, так как я долгое время застреваю над проблемой.
Я реализую сценарий, в котором я пытаюсь прочитать все данные из файла bootstrap.yaml в файле класса конфигурации.
/src/main/resources/META-INF/spring.factories ->
org.springframework.cloud.bootstrap.BootstrapConfiguration=\
com.xyz.config.BootStrapConfig

/src/main/resources/bootstrap.yml содержит записи ниже ->
spring.cloud.bootstrap.enabled: true
spring.application.name: ms-service
aws.service.name: lambda

зависимости в моем файле gradle.build ->
.........
def poiVersion = "3.14"
def joltVersion = "0.1.1"
def awsSdkVersion = "1.12.585"
def googleGuavaVersion = '24.1-jre'
def springBootVersion = "2.0.0.RELEASE"
def aspectVersion = "1.8.8"
def springCloudVersion = "1.2.2.RELEASE"

api("org.springframework.boot:spring-boot:${springBootVersion}")
api("org.springframework.boot:spring-boot-starter:${springBootVersion}")
api("org.springframework.boot:spring-boot-starter-web:${springBootVersion}")
api("org.springframework.boot:spring-boot-starter-aop:${springBootVersion}")
api("org.springframework.boot:spring-boot-starter-actuator:${springBootVersion}")

api("org.aspectj:aspectjrt:${aspectVersion}")
api("org.aspectj:aspectjweaver:${aspectVersion}")
api('net.sf.json-lib:json-lib:2.4:jdk15')
api('org.apache.commons:commons-lang3:3.7')

api("com.google.guava:guava:$googleGuavaVersion")
api("com.amazonaws:aws-java-sdk-sqs:${awsSdkVersion}")
api("com.amazonaws:aws-java-sdk-sns:${awsSdkVersion}")
api("com.amazonaws:aws-java-sdk-core:${awsSdkVersion}")
api("com.amazonaws:aws-java-sdk-kms:${awsSdkVersion}")
api("com.amazonaws:aws-java-sdk-s3:${awsSdkVersion}")

api("com.amazonaws:elasticache-java-cluster-client:1.1.1")

api("org.springframework.cloud:spring-cloud-aws-messaging:${springCloudVersion}")
api("org.springframework.cloud:spring-cloud-aws-autoconfigure:${springCloudVersion}")

api('org.neo4j:neo4j-cypher-compiler-2.2:2.2.5')
api("com.bazaarvoice.jolt:json-utils:${joltVersion}")
api("com.bazaarvoice.jolt:jolt-core:${joltVersion}")
api('com.nimbusds:oauth2-oidc-sdk:5.63')

api('junit:junit:4.12')

api("org.springframework.boot:spring-boot-starter-test:${springBootVersion}") {
exclude group: "com.vaadin.external.google", module:"android-json"
}
api('org.skyscreamer:jsonassert:1.2.3'){
exclude group: "com.vaadin.external.google", module:"android-json"
}

api('com.google.code.gson:gson:2.8.2')

api('com.github.everit-org.json-schema:org.everit.json.schema:1.8.0')
api ('org.json:json:20180130')

api("org.springframework.cloud:spring-cloud-context:2.0.0.RELEASE")
api("org.springframework.cloud:spring-cloud-starter-bootstrap:3.1.8")
api('org.springframework.retry:spring-retry:1.3.1')

api 'org.springframework:spring-aspects:4.3.8.RELEASE'

testImplementation group: 'org.mockito', name: 'mockito-core', version: '2.22.0'
.....

Я пытаюсь прочитать записи в com.xyz.config.BootStrapConfig.java, как показано ниже
@Configuration
public class BootStrapConfig {

.....
@Value("${aws.service.name}")
private String serviceName;

@Value("${spring.application.name}")
private String appName;

@Bean
public PropertySourceLocator configSourceLocator() throws URISyntaxException {

log.info("BootStrapConfig - configSourceLocator method: serviceName-{}, app name-{}", serviceName, appName);
Map config = new HashMap();

config.put("url", " code that will fetch value from aws");
config.put("username", " code that will fetch value from aws");
config.put("secret","code that will fetch value from aws");
return environment -> {
return new MapPropertySource("configparams", config);
};
}

.....

Основной класс приложения Spring Boot показан ниже:
package com.xyz;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.aws.messaging.config.annotation.EnableSns;
import org.springframework.cloud.aws.messaging.config.annotation.EnableSqs;
import org.springframework.context.annotation.PropertySource;
import org.springframework.retry.annotation.EnableRetry;

@SpringBootApplication(scanBasePackages = "com.xyz", exclude = {
org.springframework.cloud.aws.autoconfigure.context.ContextInstanceDataAutoConfiguration.class,
org.springframework.cloud.aws.autoconfigure.context.ContextStackAutoConfiguration.class,
org.springframework.cloud.aws.autoconfigure.context.ContextRegionProviderAutoConfiguration.class
})

@EnableSqs
@EnableSns
@EnableRetry
@PropertySource({ "classpath:object-mapping.properties","classpath:config.properties"})
public class XYZIntegrationApplication {

public static void main(String[] args) {

new SpringApplicationBuilder(XYZIntegrationApplication.class)
.properties("spring.config.location:classpath:application.yml")
.build().run(args);
}
}

Создал сборку Gradle, и она прошла успешно, но когда я запускаю приложение в intellij локально, приложение завершается с ошибкой ниже
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.xyz.config.BootStrapConfig': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'aws.service.name' in value "${aws.service.name}"
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:405) ~[spring-beans-5.2.9.RELEASE.jar:5.2.9.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1420) ~[spring-beans-5.2.9.RELEASE.jar:5.2.9.RELEASE]


Подробнее здесь: https://stackoverflow.com/questions/790 ... p-yml-file
Ответить

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

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

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

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

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