springboot에서 yml 프로필을 사용하여 정적 변수에 값을 부여하는 강좌

선언:
이 요구 사항은 봉인된 clickhouseUtil 데이터 조회 엔진 연결 도구 클래스를 수정하는 것입니다.이런 방법 중의 방법은 모두 정태적인 방법이기 때문이다.연결 주소와 같은 매개 변수는 서로 다른 환경에 따라 바뀌어야 한다.예를 들어 개발 주소, 테스트 주소, 생산 주소 등 모든 설정 파일을 통해 서로 다른 환경에서의 설정 파라미터를 얻지만 사용하는 방법은 정적이다. 일반적인 상황에서 @value를 사용하여 변수에 직접 값을 부여할 수 없으며spring 속성의 set 방법으로 정적 변수에 값을 부여해야 한다. 그리고 정적 방법으로 정적 변수를 사용하면 된다
방법:
첫 번째 단계:yml 파일에 필요한 매개 변수를 설정합니다

clickhouse:
 address: jdbc:clickhouse://172.20.xxx.xxx:8123
 username: default
 password: xxxxx
 db: marketing
 socketTimeout: 600000
2단계:
클래스에 @Component 메모를 먼저 표시해야 합니다. 프로그램이 시작되면 자동으로 불러옵니다. 그렇지 않으면 정적 인자가 프로필의 값을 얻지 못합니다
정적 변수 생성하기
정적 변수 set 메서드에 @Value 추가 ()

 @Value("${clickhouse.address}")
 public void setClickhouseAddress(String address) {
 ClickHouseUtil.clickhouseAddress = address;
 }
마지막으로 정적 방법에서 사용하면 된다

@Component
public class ClickHouseUtil {
 
 private static String clickhouseAddress;
 
 private static String clickhouseUsername;
 
 private static String clickhousePassword;
 
 private static String clickhouseDB;
 
 private static Integer clickhouseSocketTimeout;
 
 @Value("${clickhouse.address}")
 public void setClickhouseAddress(String address) {
 ClickHouseUtil.clickhouseAddress = address;
 }
 @Value("${clickhouse.username}")
 public void setClickhouseUsername(String username) {
 ClickHouseUtil.clickhouseUsername = username;
 }
 @Value("${clickhouse.password}")
 public void setClickhousePassword(String password) {
 ClickHouseUtil.clickhousePassword = password;
 }
 @Value("${clickhouse.db}")
 public void setClickhouseDB(String db) {
 ClickHouseUtil.clickhouseDB = db;
 }
 @Value("${clickhouse.socketTimeout}")
 public void setClickhouseSocketTimeout(Integer socketTimeout) {
 ClickHouseUtil.clickhouseSocketTimeout = socketTimeout;
 }
 
 
 public static Connection getConn() {
 
 ClickHouseConnection conn = null;
 ClickHouseProperties properties = new ClickHouseProperties();
 properties.setUser(clickhouseUsername);
 properties.setPassword(clickhousePassword);
 properties.setDatabase(clickhouseDB);
 properties.setSocketTimeout(clickhouseSocketTimeout);
 ClickHouseDataSource clickHouseDataSource = new ClickHouseDataSource(clickhouseAddress,properties);
 try {
  conn = clickHouseDataSource.getConnection();
  return conn;
 } catch (SQLException e) {
  e.printStackTrace();
 }
 
 return null;
 }
 
 public static List<JSONObject> exeSql(String sql){
 log.info("cliockhouse  sql:" + sql);
 Connection connection = getConn();
 try {
  Statement statement = connection.createStatement();
  ResultSet results = statement.executeQuery(sql);
  ResultSetMetaData rsmd = results.getMetaData();
  List<JSONObject> list = new ArrayList();
  while(results.next()){
  JSONObject row = new JSONObject();
  for(int i = 1;i<=rsmd.getColumnCount();i++){
   row.put(rsmd.getColumnName(i),results.getString(rsmd.getColumnName(i)));
  }
  list.add(row);
  }
 
  return list;
 } catch (SQLException e) {
  e.printStackTrace();
 }
 return null;
 }
 
}
이상의springboot은 yml 프로필을 사용하여 정적 변수에 값을 부여하는 강좌를 사용합니다. 이것은 여러분께 공유된 모든 내용입니다. 여러분께 참고가 되고 저희를 많이 사랑해 주시기 바랍니다.

좋은 웹페이지 즐겨찾기