最近我們在乙個小專案作了一點新的嘗試,改變以往傳統的做法,用base類統一注入管理bean的方式來簡化程式設計。
這裡需要提醒一點的是,一定要記得在具體action bean的spring配置時加上parent屬性,如果你忘了新增這個屬性,雖然你的action在**中確實是繼承了baseaction,編譯和應用伺服器啟動時並不會報錯,但當程式執行到具體action中用this.get***service()來取得baseaction中的service例項時,只能取到空指標null。原因是你沒寫parent屬性,spring不會自動去給baseaction注入需要的service bean。
這套新的方案,我們專門用load runner作了乙個效能測試,在模擬訪問量達到10000時(不是完全的併發),新方案的記憶體損耗和傳統方案沒有太大差別。也就是說用新方案不會對記憶體產生大量的額外損耗,一方面因為我的service都是singleton的,另一方面spring的延遲注入也減少了一些開銷。因為雖然我們每乙個具體業務action都從baseaction繼承了,而baseaction擁有所有的service bean,但因為每個具體action只根據需要使用到了某幾個service,而不是所有的service,所以只有用到的這幾個service會被注入這個action例項所引用的baseaction例項,在加上單例項的作用,因此,這種方案從理論上來說應該和傳統方案的記憶體損耗是近似的。
我們打算在接下來的大型專案中使用這個方案,看看真的具體到大型專案的實際執行中,是否會有別的問題。總之,我們會持續改進我們的設計思路和方案,朝著提高開發效率的方向前進。
用Base類統一注入的方式簡化程式設計
最近我們在乙個小專案作了一點新的嘗試,改變以往傳統的做法,用base類統一注入管理bean的方式來簡化程式設計。這裡需要提醒一點的是,一定要記得在具體action bean的spring配置時加上parent屬性,如果你忘了新增這個屬性,雖然你的action在 中確實是繼承了baseaction,編...
用dll注入的方式隱藏程序
上次那個 改變鍵盤布局的程式,被同學很容易的就在任務管理器裡找出來殺掉了,不爽!想個辦法把它藏起來。先把原來的那個程式稍做修改,然後build成dll。即加乙個dllentry就行了。dllentry proc hinst hinstance,reason dword,reserved1 dword...
用dll注入的方式隱藏程序
上次那個改變鍵盤布局的程式,被同學很容易的就在任務管理器裡找出來殺掉了,不爽!想個辦法把它藏起來。先把原來的那個程式稍做修改,然後build成dll。即加乙個dllentry就行了。dllentry proc hinst hinstance,reason dword,reserved1 dword ...