Java Spring启动自定义属性

Java Spring启动自定义属性,java,spring-boot,Java,Spring Boot,在我的项目中有两个资源属性 1。application.properties server.port=8002 spring.data.mongodb.host= spring.data.mongodb.port= spring.data.mongodb.database= spring.data.mongodb.username= spring.data.mongodb.password= server.port=8002 spring.data.mongodb.host= spring

在我的项目中有两个资源属性

1。application.properties

server.port=8002

spring.data.mongodb.host=
spring.data.mongodb.port=
spring.data.mongodb.database=
spring.data.mongodb.username=
spring.data.mongodb.password=
server.port=8002

spring.data.mongodb.host=
spring.data.mongodb.port=
spring.data.mongodb.database=
spring.data.mongodb.username=
spring.data.mongodb.password=

spring.data.solr.host
2。应用程序开发.属性

server.port=8002

spring.data.mongodb.host=
spring.data.mongodb.port=
spring.data.mongodb.database=
spring.data.mongodb.username=
spring.data.mongodb.password=
server.port=8002

spring.data.mongodb.host=
spring.data.mongodb.port=
spring.data.mongodb.database=
spring.data.mongodb.username=
spring.data.mongodb.password=

spring.data.solr.host
此类使用开发的值属性

@Configuration
@EnableSolrRepositories(basePackages = {
    "id.alfadigital.alfagift.service.product.v1.db.solr.repository",
    "id.alfadigital.alfagift.service.product.v2.db.solr.repository"
})
public class SolrConfiguration {

  @Value("${spring.data.solr.host}")
  private String solrUrl;

  @Bean
  public SolrClient solrClient() {
    return new HttpSolrClient.Builder(solrUrl).build();
  }

  @Bean
  public SolrTemplate solrTemplate(SolrClient client) {
    return new SolrTemplate(client);
  }
}
我使用应用程序开发.properties作为我的项目资源

因此,我使用以下命令运行该项目:

mvn spring启动:运行-D spring.profiles.active=development

但是在我运行项目时附加了一个错误

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'solrConfiguration': 
           Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: 
           Could not resolve placeholder 'spring.data.solr.host' in value "${spring.data.solr.host}"
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'spring.data.solr.host' in value "${spring.data.solr.host}"

我很困惑,我的错误在哪里?我该怎么办?

您能用下面的命令运行您的应用程序吗。由于错误地使用命令,它无法拾取
开发
配置文件

mvn spring启动:run-Dspring.profiles.active=development

例如:

如果您有正确的文件名
应用程序开发.properties
和正确的Java选项
-Dspring.profiles.active=development
,您还必须将特定于配置文件的属性文件与
应用程序.properties

配置文件特定的属性从与标准application.properties相同的位置加载


确保您的属性文件与所述的Spring配置文件的名称匹配

也就是说,如果您是从“开发”配置文件运行的,Spring应该选择
application development.properties
文件(或
application development.yml

然后在
application.properties
文件中,可以使用
spring.profiles.active=development
指定配置文件。或者,您可以使用前面提到的
-Dprofile
从命令行指定配置文件

如链接中所述,“如果指定了多个配置文件,则应用最后一个wins策略。例如,由spring.profiles.active属性指定的配置文件添加在通过SpringApplication API配置的配置文件之后,因此优先。”


但还要注意的是,在共享代码中,您的spring.data.solr.host属性没有任何值。

请检查您的应用程序是否在开发配置文件下运行。看来不是。如果您看到spring日志的开头,您可以看到活动的概要文件。在您的开发配置中,该属性实际上有值吗?因为在您共享的属性文件中,没有。