config-server中读取properties文件参数,解决@Value无法读取的问题

普通类的参数读取:
config-server中读取properties文件参数,解决@Value无法读取的问题_第1张图片

描述:由于使用了config-server,配置文件不在项目中而是使用bootstrap.yml代替,真正的配置文件在远端git上,所以若使用上面的方式获取则会报错,可以使用以下方式解决。原因个人认为是将文件放置git后项目无法通过bootstrap.yml获取响应文件参数,导致报红

解决:让该类实现EnvironmentAware接口,重写setEnvironment(Environment environment)方法,可以从environment中获取参数值信息,如下

git上参数文件:
config-server中读取properties文件参数,解决@Value无法读取的问题_第2张图片

项目代码:

package com.luntek.certificate.config;


import lombok.*;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.context.EnvironmentAware;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;

/**
 * @description: elasticsearch相关参数配置
 * @author: Czw
 * @create: 2020-06-29 14:02
 **/
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Configuration
public class EsEnvironmentProperties implements EnvironmentAware {
    private Environment environment;
    /**
     * ES请求地址
     */
    private String host;

    /**
     * 端口
     */
    private int port;

    /**
     * 协议
     */
    private String protocol;

    @Override
    public void setEnvironment(Environment environment) {
        this.environment = environment;
        this.host = this.environment.getProperty("es.host");
        String property = this.environment.getProperty("es.port");
        this.port = Integer.parseInt(StringUtils.isEmpty(property) ? "0" : property);
        this.host = this.environment.getProperty("es.host");
        System.err.println("port=" + port);
    }

}

效果:
config-server中读取properties文件参数,解决@Value无法读取的问题_第3张图片

你可能感兴趣的:(config-server中读取properties文件参数,解决@Value无法读取的问题)