有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java@ConfigurationProperties在控制器注释类中工作,但在组件类中不工作

我已经为下面的配置创建了一个WebserviceCredentials类,并在@component类中使用@autowired for WebserviceCredentials。它不起作用(显示空值),但在@restcontroller类中使用时,它起作用,感谢您的帮助

@Component
@ConfigurationProperties(prefix="webservice")
public class WebserviceCredentials {

    @Value("${webservice.EndPoint}")
    private String webserviceEndpoint;
    @Value("${webservice.Username}")
    private String username;
    @Value("${webservice.Password}")
    private String password;

    public String getwebserviceEndpoint() {
        return webserviceEndpoint;
    }
    public void setwebserviceEndpoint(String webserviceEndpoint) {
        this.webserviceEndpoint = webserviceEndpoint;
    }

    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }


}

共 (2) 个答案

  1. # 1 楼答案

    @ConfigurationProperties(prefix=“webservice”)应该位于表示属性文件的POJO上。要在WebServiceRedentials类中使用它,可以使用

    public class WebserviceCredentials {
      @Autowire 
      private ConfigurationProperties configurationProperties;
      //the rest of your code
    }
    

    你可以参考我最近发布的这个链接

    Mapping YMAL properties

  2. # 2 楼答案

    设置与如何使用ConfigurationProperties无关

    @ConfigurationProperties(prefix="webservice")
    public class WebserviceCredentials {
    private String endpoint;
    private String username;
    private String password;
    
    public String getEndpoint() {
        return endpoint;
    }
    public void setEndpoint(String endpoint) {
        this.endpoint = endpoint;
    }
    
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    }
    

    然后将@EnableConfigurationProperties(WebserviceCredentials.class)添加到Configuration或主应用程序类中

    详见https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-typesafe-configuration-properties