通過Spring獲取properties檔案屬性值

2021-07-25 06:41:46 字數 1178 閱讀 1040

spring提供了註解@value,用於在程式中獲取properties配置檔案屬性值。例如:

當有多個配置檔案時,上述配置可以配置多條。

2. spring bean中使用@value註解獲取指定引數。

// ***.properties配置項:

// server.ip=192.168.1.1

// server.port=8080

@value("$")

private string ip;

@value("$")

private int port;

使用@value註解的前提是當前物件的生命週期由spring管理,是spring bean,無論通過xml配置檔案還是@component、@service等註解宣告。假如乙個物件的生命週期是我們程式自己管理的,比如常規用法下的new object(),特別是做一些框架開發,經常用到class.forname().newinstance()來例項化物件,那麼想要反射為新建立物件的成員變數賦值時,如何借助spring來獲取已經解析好的properties屬性值是個值得一試的探索。上述場景可以簡化為:

如何在乙個擁有spring上下文的平台上,對不受spring管理的物件使用依賴注入,達到類似@value註解實現的功能。

1. 宣告乙個實現embeddedvalueresolveraware介面的例項,用@component註解宣告為spring bean,重寫setembeddedvalueresolver()方法,將stringvalueresolver例項的引用儲存下來,並且對外提供getpropertiesvalue()方法,用於獲取properties值。

@component

public class propertiesutils implements embeddedvalueresolveraware

public string getpropertiesvalue(string name)

}

2. 通過$作為name格式呼叫getpropertiesvalue()方法,獲取properties值。

string name = "$";

string value =

stringvalueresolve解析出來的值都是string型別的,非string型別需要在拿到引數string值後自行轉換。

Spring通過上下文獲取bean

某處呼叫get方法,卻報空指標異常。經查,是dao物件為null。再查,是service物件為newinstance,並沒有注入dao物件。因此修改語句,從spring中獲取service物件。已有引數 classservice 最終目標 t sv 1.sv由spring上下文context獲取 t...

通過spring讀取properties檔案內容

在實際專案中,為方便系統的更改,我們常常將一些變數的值放到資源檔案中,比方說系統用到的呼叫服務的ip位址,埠,使用者名稱和密碼以及一些路徑等。為方便我們輕鬆獲得這些放在資源檔案中的變數,spring則為我們提供了讀取 properties檔案的內容的很好的方法。如下 1 在資源檔案 properti...

通過Spring整合MyBatis

step1.導包 step2.新增spring配置檔案 bean來代替 sqlsessionfactorybean step3.配置sqlsessionfactorybean step4.實體類step5.對映檔案spring容器裡面 預設的id是首字母小寫之後的介面名 step8.啟動spring...