首頁 > 軟體

Springboot如何獲取yml、properties引數

2022-03-23 13:01:15

如何獲取yml、properties引數

1、使用@Value()註解

1.1 設定資料

如:在properties.yml檔案設定如下資料

message_zh: 張三
message_en: ergouzi

在controller中獲取:

1.2 讀取資料

讀取自定義檔案:須加註解

@PropertySource(value = {"classpath:config.yml","classpath:config.properties"})

讀取application檔案不需要加註解 

// 中文
@Value("${message_zh}")
private String message_zh;
// 英文
@Value("${message_en}")
private String message_en;
@RequestMapping(value = "/{id}")
public String index(HttpServletRequest request, @PathVariable Integer id){
    if (id == 1 ){
        request.setAttribute("info",message_zh);
    }else {
        request.setAttribute("info", message_en);
    }
    return "index";
}

2、使用 @component

@ConfigurationProperties(prefix = "user")
@PropertySource(value = "classpath:myConfig.properties")

首先在myConfig.properties或myConfig.yml中設定引數:

user.userName = '李二狗'
user.password = 'admin'

2.1 javabean

/**
 * 〈一句話功能簡述〉<br> 
 * 〈yml或properties設定引數〉
 *
 * @author 丶Zh1Guo
 * @create 2018/11/21
 * @since 1.0.0
 */
@Component                                // 元件
@ConfigurationProperties(prefix = "user")              // 字首
@PropertySource(value = "classpath:myConfig.properties")    // 自定義組態檔路徑
public class properConfig {
    private String userName;   // 注意要和組態檔一致
    private String password;
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
}

2.2 controller

/**
 * 〈一句話功能簡述〉<br> 
 * 〈〉
 *
 * @author 丶Zh1Guo
 * @create 2018/11/21
 * @since 1.0.0
 */
@restController
public class template {
    @Autowired
    properConfig config;
    @RequestMapping(value = "/config")
    public String config(){
        return config.getUserName();
    }
}

總結:

第一種方法適合只取某些資料

第二種方法適合取所有資料

yml和properties區別

yml:key:(空格)value

properties: key = value

組態檔讀取yml自定義引數(親測可用)

dict:
  js:
    url: D:jsFile

首先自定義一個引數

@Component
@Data
@ConfigurationProperties(prefix = "dict.js")
@PropertySource(value = "classpath:application-dev.yml")
public class PropertisParam {
    private String url;
}

利用平時@value 獲取值

然後在所需要的呼叫的設定類裡面注入PropertisParam,利用@PostConstruct初始化值

@Resource
private PropertisParam param;
private static String root=null;
@PostConstruct
public void init(){
    root = param.getUrl();
}

另一種方式   

@Data
@Component
@ConfigurationProperties(prefix = "spring")
public class LoginBody {
    private String appid;
    private String apiCode;
    private String userName;
}

基本寫法就不解釋了:主要講一哈注入方式

類上面新增@component

private static LoginBody loginBody;
@Resource
public void init(LoginBody loginBody) {
    SecurityUtil.loginBody = loginBody;
}

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com