@spring boot中的值未从application.properties中提供值

rhfm7lfc  于 2021-07-23  发布在  Java
关注(0)|答案(1)|浏览(255)

我试图将应用程序属性中的值读入一个用

@Configuration
public class testClass {

  @Value("${com.x.y.z.dummy.name}")
  private String name;

一旦我在这个类中用@bean注解的方法上运行代码:

@Bean
  public Helper helper(X x){
     System.out.println(this.name);
  }

这里的输出是->${com.x.y.z.dummy.name},而不是application.properties中的值${com.x.y.z.dummy.name}。我尝试了@autowired,也尝试了从环境变量读取。不知道会发生什么。有人能帮忙吗?谢谢您!
添加application.properties:

com.x.y.z.dummy.name=localhost
com.x.y.z.dummy.host=8888
wydwbb8l

wydwbb8l1#

我建议在您的项目中搜索一个返回 PropertySourcesPlaceholderConfigurer . 可以将该对象配置为设置不同的前缀,而不是“${”。这样做会导致您所描述的行为。
例如,创建这个类我可以重现你的问题。

import org.springframework.context.annotation.Bean;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;

public class PrefixConfiguration {

    @Bean
    public static PropertySourcesPlaceholderConfigurer configure(){
        PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer
                = new PropertySourcesPlaceholderConfigurer();
        propertySourcesPlaceholderConfigurer.setPlaceholderPrefix("%{");
        propertySourcesPlaceholderConfigurer.setIgnoreUnresolvablePlaceholders(true);
        return propertySourcesPlaceholderConfigurer;
    }
}

你的bean可能是不同的,而且它存在的理由很充分,所以不要在没有进一步调查的情况下盲目删除它。

相关问题