1. 程式人生 > >spring中使用@Value註解獲取properties配置檔案中的變數值

spring中使用@Value註解獲取properties配置檔案中的變數值

在我們專案中往往會使用到properties配置檔案來定義一些跟系統環境有關的配置,因此今天我們學習使用spring中的@Value註解來快速方便地將我們配置檔案中的變數值賦值給java類的屬性值。

1.首先我們先在專案中建一個properties配置檔案,然後定義好我們需要的變數名和對應的值

2.然後我們需要在spring-mybatis.xml配置檔案中將這個配置檔案新增到spring專案中,程式碼:

    <!--測試@Value註解的配置檔案-->
    <context:property-placeholder location="classpath:config/value.properties" ignore-unresolvable="true"/>

3.我們需要一個Java類來申明我們需要的Java變數,在變數的前面標註註解@Value("${xxx}"),xxx就是配置檔案中的變數名稱,該註解只能使用在類屬性值上面,程式碼:

package com.ssm.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

/**
 * Created by viking on 2018/09/01
 * 系統常量配置類
 */
@Component
public class SystemConfig {

    @Value("${value.name}")
    public String sys_name;
    @Value("${value.value}")
    public  String sys_value;
    @Value("${value.type}")
    public  String sys_type;
}

4.現在看似我們的操作就做完了,其實不然,我們還需要一個重要的步驟,我們需要將我們的Java類注入到spring容器中,這樣@Value註解才能生效,畢竟是spring的註解嘛,這些操作只有讓它自己來做才行的。在spring-mybatis.xml中注入Java類的例項,我使用的是@Component註解加包掃描的方式,當然你也可以直接配置一個bean在xml檔案中,效果都一樣,程式碼:

    <!--spring掃描注入bean-->
    <context:component-scan base-package="com.ssm.config"/>

5.該做的操作都做完了,下面開始測試階段,讓我們看看這個靠不靠譜吧!編寫一個測試類,程式碼:

package com.ssm.controller;

import com.ssm.config.SystemConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

/**
 * Created by viking on 2018/09/01
 * 測試Controller
 */
@RestController
@RequestMapping("test")
public class TestController {
    @Autowired
    private SystemConfig systemConfig;

    @RequestMapping("value")
    public Object testValue(){
        Map<String,String> map = new HashMap<String, String>();
        map.put("sys_name",systemConfig.sys_name);
        map.put("sys_value",systemConfig.sys_value);
        map.put("sys_type",systemConfig.sys_type);
        return map;
    }
}

執行效果:

這樣就實現了在spring中使用@Value註解直接獲取properties檔案中的變數值。

但是,這裡還有一個問題,如果我在配置檔案中配置了中文漢字,會發生什麼情況呢?如圖:

執行結果:

出現亂碼了,這個問題怎麼解決呢?很簡單,在向spring中引入properties配置檔案是加上這個:

<!--測試@Value註解的配置檔案-->
<context:property-placeholder location="classpath:config/value.properties" file-encoding="UTF-8" ignore-unresolvable="true"/>

把UTF-8換成你自己專案中使用的編碼方式即可。

執行結果:

這樣就能解決中文亂碼問題了,若文章存在不足之處歡迎大神指正,轉載請註明出處。