我正在使用Struts並遇到一些奇怪的行爲。雖然它不會產生任何錯誤或錯誤,但我認爲與您分享它會很有趣。Struts2中的奇怪行爲
也許你們其中一個可以解釋爲什麼會發生這種情況。
創建下面的代碼一個Struts動作 -
public class MyAction extends ActionSupport {
private Map<String, Map<String, Object>> map = new HashMap<String, Map<String, Object>>();
public String execute() {
System.out.println(map);
return SUCCESS;
}
public Map<String, Map<String, Object>> getMap() {
return map;
}
public void setMap(Map<String, Map<String, Object>> map) {
this.map = map;
}
}
創建關聯的映射和需要JSP和執行的操作。 你會看到下面的控制檯輸出 -
{systemProperties={java.runtime.name=Java(TM) SE Runtime Environment, sun.boot.library.path=C:\Program Files\Java\jdk1.6.0_32\jre\bin, java.vm.version=20.7-b02, shared.loader=${catalina.base}/shared/classes ....
因此很明顯,Struts是注射系統性能到我的地圖。 但它爲什麼這樣做呢?我沒有要求它這樣做。沒有使用特殊的XML配置或註釋。 什麼部分的Struts(什麼攔截器)負責這個?我剛剛發現了一個錯誤還是這種正常行爲?如果這是正常的,爲什麼Struts開發人員認爲將每個Map<String, Map<String, Object>>
注入系統屬性都是明智的做法?
在你的spring配置XML中設置了'autowire'參數嗎? – plucury
@plucury爲什麼會有所作爲? Spring注入bean依賴關係。它不注入集合。 –
如果設置了方法,Spring會注入任何類型的屬性。 – plucury