快速高層次的概念..從命令行靜態的Util類與Spring,不確定我是否應該讓一個SpringBean,設計關注我的設計的
CLI tool to create AWS EBS snapshots
CLI tool just calls Java class com.util.SnapshotUtil
com.util.Snapshot calls AWS Interfacing class com.aws.AWSAdapter
例如使用..
cli-tool create-snapshot.. calls java class eventually calling below method
SnapshotUtil.createSnapshot() // statically call AWSAdapter.createSnapshot();
目前一切都是靜態的,並且在Spring之外。
現在我想知道AWSAdapter是否應該不是靜態的,並且由Spring加載,這意味着我的SnapshotUtil需要通過ApplicationContext創建適配器,我相信以及爲它提供一個帶有Adapter bean信息的XML。
最初我以爲這是一個簡單的util來處理ebs快照,我可以忽略Spring,但AWSAdapter可能被其他方式使用,但是,不確定靜態是專業還是con。
適配器被設計成僅與EBS快照處理,所以其基本上或者創建/刪除/通過使用AmazonEC2Client實例查看快照。即使一個Spring託管類想要使用這個Adapter,我的問題是如果它通過Spring加載適配器或者只是靜態地調用它,它是否很重要。響應
編輯回答:
我開始把它變成一個bean,並刪除了所有靜態引用,我給它一個getInstance方法(),這將負載本身通過ApplicationContext,並且,初始化等之後返回主調依賴和配置。當我從春天之外打電話給你時,那是好嗎?它似乎在工作,它仍然被認爲是「注入」?我非常肯定它沒有注入,因爲調用者不是春天管理的,但我覺得這可能是hacky?因爲我在非spring類中使用spring bean,所以我從來沒有用spring來管理,所以我覺得沒有理由把這個工具變成bean。我仍然會這樣做,因爲我明白其中的好處。
我有'把它變成一個bean的原因之一是它使用另一個我需要處理身份驗證的spring bean,但是我想到了它,我可以很容易地使用'new'關鍵字實例化另一個bean 。
我是正確的,當我說我把我的類轉換成豆,但它不是「注入」到主叫方,使用getInstance()方法時,至少?如果我在spring bean中使用getInstance方法(),如果我要通過彈簧配置「注入」實用工具,會有什麼區別嗎?
請參閱編輯,這裏不能評論 – gallly
@CatznDogz請看我編輯的答案。 –