伙伴云客服论坛»论坛 S区 S软件开发 查看内容

0 评论

0 收藏

分享

springboot 使用yml配置文件给静态变量赋值教程

声明:
此处需求是修改封装的clickhouseUtil数据查询引擎连接工具类。由于此类中的方法都是静态方法。连接地址等参数需要根据不同环境改变。例如开发下地址,测试下地址,消费地址等,所有通过配置文件来获取不同环境下的配置参数,但是使用的方法是静态的,所有不能使用一般情况下的@value直接给变量赋值,需要用到spring 属性的set方法来给静态变量赋值,然后静态方法使用静态变量即可
方法:
第一步:在yml文件中配置需要的参数
  1. clickhouse:
  2. address: jdbc:clickhouse://172.20.xxx.xxx:8123
  3. username: default
  4. password: xxxxx
  5. db: marketing
  6. socketTimeout: 600000
复制代码
第二步:
类上一定要先注明@Component注解,在程序启动是自动加载,否则静态参数仍旧获取不到配置文件的值
创建静态变量
给静态变量set方法上添加@Value()
  1. @Value("${clickhouse.address}")
  2. public void setClickhouseAddress(String address) {
  3. ClickHouseUtil.clickhouseAddress = address;
  4. }
复制代码
最后在静态方法中使用即可
  1. @Component
  2. public class ClickHouseUtil {
  3. private static String clickhouseAddress;
  4. private static String clickhouseUsername;
  5. private static String clickhousePassword;
  6. private static String clickhouseDB;
  7. private static Integer clickhouseSocketTimeout;
  8. @Value("${clickhouse.address}")
  9. public void setClickhouseAddress(String address) {
  10. ClickHouseUtil.clickhouseAddress = address;
  11. }
  12. @Value("${clickhouse.username}")
  13. public void setClickhouseUsername(String username) {
  14. ClickHouseUtil.clickhouseUsername = username;
  15. }
  16. @Value("${clickhouse.password}")
  17. public void setClickhousePassword(String password) {
  18. ClickHouseUtil.clickhousePassword = password;
  19. }
  20. @Value("${clickhouse.db}")
  21. public void setClickhouseDB(String db) {
  22. ClickHouseUtil.clickhouseDB = db;
  23. }
  24. @Value("${clickhouse.socketTimeout}")
  25. public void setClickhouseSocketTimeout(Integer socketTimeout) {
  26. ClickHouseUtil.clickhouseSocketTimeout = socketTimeout;
  27. }
  28. public static Connection getConn() {
  29. ClickHouseConnection conn = null;
  30. ClickHouseProperties properties = new ClickHouseProperties();
  31. properties.setUser(clickhouseUsername);
  32. properties.setPassword(clickhousePassword);
  33. properties.setDatabase(clickhouseDB);
  34. properties.setSocketTimeout(clickhouseSocketTimeout);
  35. ClickHouseDataSource clickHouseDataSource = new ClickHouseDataSource(clickhouseAddress,properties);
  36. try {
  37.   conn = clickHouseDataSource.getConnection();
  38.   return conn;
  39. } catch (SQLException e) {
  40.   e.printStackTrace();
  41. }
  42. return null;
  43. }
  44. public static List<JSONObject> exeSql(String sql){
  45. log.info("cliockhouse 执行sql:" + sql);
  46. Connection connection = getConn();
  47. try {
  48.   Statement statement = connection.createStatement();
  49.   ResultSet results = statement.executeQuery(sql);
  50.   ResultSetMetaData rsmd = results.getMetaData();
  51.   List<JSONObject> list = new ArrayList();
  52.   while(results.next()){
  53.   JSONObject row = new JSONObject();
  54.   for(int i = 1;i<=rsmd.getColumnCount();i++){
  55.    row.put(rsmd.getColumnName(i),results.getString(rsmd.getColumnName(i)));
  56.   }
  57.   list.add(row);
  58.   }
  59.   return list;
  60. } catch (SQLException e) {
  61.   e.printStackTrace();
  62. }
  63. return null;
  64. }
  65. }
复制代码
以上这篇springboot 使用yml配置文件给静态变量赋值教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持网站。

回复

举报 使用道具

全部回复
暂无回帖,快来参与回复吧
本版积分规则 高级模式
B Color Image Link Quote Code Smilies

伙伴的伙伴
注册会员
主题 27
回复 16
粉丝 0
|网站地图
快速回复 返回顶部 返回列表