使用@Value注解给静态变量赋值
第一步:在yml文件中配置需要的参数
clickhouse:
  address: jdbc:clickhouse://172.20.xxx.xxx:8123
  username: default
  password: xxxxx
  db: marketing
  socketTimeout: 60000
第二步:
类上一定要先注明@Component注解,在程序启动是自动加载,否则静态参数仍旧获取不到配置文件的值
创建静态变量
给静态变量set方法上添加@Value()
第三步:
@Value("${clickhouse.address}")
    public  void setClickhouseAddress(String address) {
        ClickHouseUtil.clickhouseAddress = address;
    }
完整的demo代码:
package com.qingmu.annotation.value;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * @author lida
 * @version 1.0
 * @create 2022/9/17 17:31
 * @description 注解value
 * <p>
 * 为常量注入配置信息
 */
@Slf4j
@Component
@RestController
public class ConstValue {
    public static String db;
    public static String address;
    public static String username;
    public static String password;
    public static String socketTimeout;
    @Value("${clickhouse.address}")
    public void setAddress(String address) {
        ConstValue.address = address;
    }
    @Value("${clickhouse.username}")
    public void setUsername(String username) {
        ConstValue.username = username;
    }
    @Value("${clickhouse.password}")
    public void setPassword(String password) {
        ConstValue.password = password;
    }
    @Value("${clickhouse.db}")
    public void setDb(String db) {
        ConstValue.db = db;
    }
    @Value("${clickhouse.socketTimeout}")
    public void setSocketTimeout(String socketTimeout) {
        ConstValue.socketTimeout = socketTimeout;
    }
    @RequestMapping("/test")
    public String value() {
        log.info("ConstValue.db:{}", ConstValue.db);
        log.info("ConstValue.address:{}", ConstValue.address);
        log.info("ConstValue.username:{}", ConstValue.username);
        log.info("ConstValue.password:{}", ConstValue.password);
        log.info("ConstValue.socketTimeout:{}", ConstValue.socketTimeout);
        return "success";
    }
}
或者demo信息
package com.qingmu.annotation.value;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
/**
 * @author lida
 * @version 1.0
 * @create 2022/9/18 10:25
 * @description
 */
@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest
public class ConstValueTest {
    public static String db;
    public static String address;
    public static String username;
    public static String password;
    public static String socketTimeout;
    @Value("${clickhouse.address}")
    public void setAddress(String address) {
        ConstValue.address = address;
    }
    @Value("${clickhouse.username}")
    public void setUsername(String username) {
        ConstValue.username = username;
    }
    @Value("${clickhouse.password}")
    public void setPassword(String password) {
        ConstValue.password = password;
    }
    @Value("${clickhouse.db}")
    public void setDb(String db) {
        ConstValue.db = db;
    }
    @Value("${clickhouse.socketTimeout}")
    public void setSocketTimeout(String socketTimeout) {
        ConstValue.socketTimeout = socketTimeout;
    }
    @Test
    public void value() {
        log.info("ConstValue.db:{}", ConstValue.db);
        log.info("ConstValue.address:{}", ConstValue.address);
        log.info("ConstValue.username:{}", ConstValue.username);
        log.info("ConstValue.password:{}", ConstValue.password);
        log.info("ConstValue.socketTimeout:{}", ConstValue.socketTimeout);
    }
}
本文来自博客园,作者:King-DA,转载请注明原文链接:https://www.cnblogs.com/qingmuchuanqi48/articles/12336308.html
                    
                
                
            
        
浙公网安备 33010602011771号