普通类的参数读取:
描述:由于使用了config-server,配置文件不在项目中而是使用bootstrap.yml代替,真正的配置文件在远端git上,所以若使用上面的方式获取则会报错,可以使用以下方式解决。原因个人认为是将文件放置git后项目无法通过bootstrap.yml获取响应文件参数,导致报红
解决:让该类实现EnvironmentAware接口,重写setEnvironment(Environment environment)方法,可以从environment中获取参数值信息,如下
git上参数文件:
项目代码:
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);
}
}
效果: