这是我第一次尝试用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”接口。 –