這是我第一次嘗試用Spring編寫一個swing應用程序(僅基於java的配置,我不需要XML)。問題是我不知道如何自動裝載需要參數的bean,在我的應用程序中,我將創建大量的JPanel(以及LineBorder等),並且我正在努力尋找正確的方法做這個。我應該創建一個將返回一個簡單的JButton的bean定義,將範圍設置爲「prototype」,自動調用它,並在我的GUI類中完成所有初始化?基於Java的配置,帶參數的自動裝配bean
在Swing應用程序此外,應利用春季創造一切嗎?(不是一個單一的「新的」我的配置類的外關鍵字),就像當我有
linebuttonPanel.setPreferredSize(new Dimension(0, 70));
我應該不是寫一個方法返回一個像這樣的新維度bean?
Dimension d = context.getBean("dimension");
d.setSize(0, 70);
linebuttonPanel.setPreferredSize(d);
或者我應該移動的尺寸初始化到配置類,並用此
linebuttonPanel.setPreferredSize(context.getBean("dimension", 0, 70));
我試圖用@Autowire儘可能這是我遇到的問題,這裏是第一選項,其中我需要以某種方式提供的說法,而自動裝配
第二個選項是實現Applicati onContextAware和使用getBean方法,但這是如何爲每個bean做到這一點的正確方法?
你有沒有考慮,而混合彈簧和擺動,你可能會遇到的線程問題? Swing要求您尊重其線程模型(Event Dispatch Thread),並且在將組件創建委派給Spring時可能很難控制。在我們的項目中,在客戶端,我們只使用Spring來實現由Swing組件調用的服務,但我們保持對所有組件生命週期的控制。並不是說這是不可能實現的,但是那裏的教程似乎完全忽略了這一點。 –
不幸的是'@ Autowared'不支持傳遞參數。所以,你的第二種方法已經足夠好了,但是請注意:不要實現'ApplicationContextAware'接口。只需使用@Autowired註釋標記類的ApplicationContext屬性即可。此註釋旨在簡化對象的綁定,包括實現所有「Aware」接口。 –