Java 如何访问';spring.application.name';当在bootstrap.properties中定义时?
我有下面的spring boot 1.4.2.0发布示例应用程序Java 如何访问';spring.application.name';当在bootstrap.properties中定义时?,java,spring,spring-boot,dependency-injection,Java,Spring,Spring Boot,Dependency Injection,我有下面的spring boot 1.4.2.0发布示例应用程序 @SpringBootApplication public class Application { @Value("${spring.application.name}") private String applicationName; public static void main(String[] args) { SpringApplication.run(Application.c
@SpringBootApplication
public class Application {
@Value("${spring.application.name}")
private String applicationName;
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
我在bootstrap.properties中定义了以下配置:
spring.application.name=sample-app
当运行它时,我得到以下错误:
java.lang.IllegalArgumentException: Could not resolve placeholder 'spring.application.name' in string value "${spring.application.name}"
有没有关于它为什么无法注入“spring.application.name”的提示?
需要在那里定义它以支持其他spring引导云 默认情况下,如果未指定任何属性源,spring boot将在文件
application.properties
中查找您的属性。因此,您应该将属性文件重命名为该默认名称,或者手动为引导指定属性源。属性第一个答案是正确的。默认属性文件是application.properties或application.yml
该引导文件适用于SpringCloud
看
如果您正在使用SpringCloud,而引导文件不工作,则需要启用“cloud”spring概要文件
例如,使用:
./gradlew -Dspring.profiles.active=cloud bootrun
或
此应用程序中存在其他错误。如果您将它放在
bootstrap.properties
中,并且您确实有效地使用了SpringCloud,那么它将可用。我的猜测是,bootstrap.properties
在你的应用中被完全忽略了。也许你有云DEP,但你没有使用它?是的,你是对的。我本来打算使用SpringCloud,但在阅读了您的评论后,我意识到我还没有使用它!谢谢
./mvnw spring-boot:run -Dspring.profiles.active=cloud