我們有一個調用類X的某些方法的java進程。類X具有超時靜態字段,它決定線程在發生某種錯誤時應該等待多長時間。現在,我想在不改變我的java進程的情況下更改該值(我不想部署,並且此更改是實驗性的)。我如何可以使用Java代理,以更改此超時值,說1分(1 * 60 * 1000)在使用Java代理進行類加載期間修改靜態字段的值
Class X {
....
// timeout = 5 minutes
private static long timeout = 5*60*1000;
....
}
總之,如何編寫Java代理,以更改一個靜態變量的值。我已經通過一些教程,但沒有解釋如何做到這一點。我沒有訪問主要方法。該項目由IOC容器運行。
感謝,
仙人
爲什麼不只是從你的代碼中抽象出來,並把它放在屬性文件中?如果需要,可以在運行時更改屬性文件,並且每當類實例化時,它將在此時讀取屬性文件。另外,靜態字段不是「final」,所以對於setter/getter,您可以在運行時操作它的值。 – SnakeDoc 2014-11-20 20:11:54
你可以使用反射和訪問該字段http://tutorials.jenkov.com/java-reflection/private-fields-and-methods.html – searchengine27 2014-11-20 20:27:44