Value註解為什麼不能直接為靜態變數賦值

2021-09-13 22:51:11 字數 528 閱讀 7166

@value("$")

private static string endpoint;

在使用endpoint這個成員變數時,取不到值,是空值。

靜態變數(即類變數)是乙個類的屬性,而不是物件的屬性。spring依賴注入是基於物件層面上的。

而且使用靜態變數擴大了靜態方法的使用範圍,靜態方法在spring是不推薦使用的,依賴注入的主要目的是讓容器去產生乙個物件的例項,然後在整個生命週期中使用他們。一旦你使用靜態方法,就不再需要去產生這個類的例項,這會讓testing變得更加困難,同時你也不能為乙個給定的類,依靠注入方式去產生多個具有不同的依賴環境的例項。這種static field是隱含共享的,並且是一種global全域性狀態,spring同樣不推薦這樣去做。

private static string endpoint;

@value("$")

public void setendpoint(string endpoint)

注意set方法也是非靜態的。

解決 value 註解有時為空

value 使用 value private string bucketname 可能為空的地方 1.類上沒加 component註解 component 把普通類例項化到spring容器裡 component public class ossclientutil private string bu...

float為什麼不能直接用 作比較

origin 浮點格式是一種資料結構,用於指定包含浮點數的字段,這些欄位的布局及其算術解釋。自計算機發明以來,出現了許多種不同的浮點數表達方式,目前最通用的是ieee二進位制浮點數算是標準 ieee 754.ieee 754規定了四種表示浮點數值的方式 單精確度 32位 雙精確度 64位 延伸單精確...

抽象類為什麼不能直接建立物件?

1.子類更具體,父類更抽象,直接建立父類物件本身沒有意義。2.如果建立的是父類物件再呼叫方法的時候,呼叫的父類中的方法,而非子類的方法,它違背了多型的這種思想和設計 3.因為父類引用指向子類物件時,呼叫的方法是子類重寫的方法,一般父類中的描述不夠具體,並不是說抽象類的構造方法沒有意義,那麼在建立子類...