Ржевский Дмитрий Rzhevskiy Dmitry

пятница июл 25, 2008

Swing+Spring

Сегодня ну нас на работе делали простую тестовую программу чтобы понять как можно юзать swing со spring. И напоролись на "багу".

Постейший конфиг:


<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

<bean id="mainFrame" class="javax.swing.JFrame">
<property name="title" value="Swing+Spring"/>

<property name="size" ref="dim"/>

</bean>
<bean name="dim" class="java.awt.Dimension">

<constructor-arg value="400"/>
<constructor-arg value="300"/>
</bean>
</beans>

вызывает исключение
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mainFrame' defined in class path resource [applicationContext.xml]: Initialization of bean failed; nested exception is org.springframework.beans.TypeMismatchException: Failed to convert property value of type [java.awt.Dimension] for property 'size'; nested exception is java.lang.IllegalArgumentException: Original must not be null
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:480)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:221)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:729)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:381)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
at ru.pronto.test.App.main(App.java:11)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)
Caused by: org.springframework.beans.TypeMismatchException: Failed to convert property value of type [java.awt.Dimension] for property 'size'; nested exception is java.lang.IllegalArgumentException: Original must not be null
at org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:391)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.convertForProperty(AbstractAutowireCapableBeanFactory.java:1288)
.......

Если выставлять проперти не size а minimumSize то всё работает.
Покапавшись в исходниках стало понятно что проперти size
похоже не является валидным Java beans пропети.
По крайней мере Introspector.getBeanInfo(JFrame.class).getPropertyDescriptors()
возвращает незаполненный десриптор

 

тестовый проект можно скачать здесь

Комментарии:

Опубликовать комментарий:
  • HTML Syntax: Подключен
Дмитрий Ржевский

Тэги:
1912 256 256-ой_день _край a-3 a-3.ru archlinux borodino c3350 cave caves cloud clustecloud coin eagle eclipse engine experiments glusterfs hadoop heroku holiday java java7 jboss jdk7 jelastic jelastic.com job krasnodar_region labinsk linux livejournal lucene lunar new_job new_release paas paraglider pass phone programmer_day ruby samsung samsung_c3350 search supercomputers syany text usage_share xcover а_3 вычисления день_программиста доля_рынка затмение конкурсы краснодарский кутузов лабинск линукс луна лунное_затмение новая новая_работа облако облачные орёл параплан поиск праздник программирование работа распределённая рыбалка система суперкомпьютер телефон файловая ява

Calendar



Feeds

Search

Links

Navigation


  • Я в ЖЖ    
  • MirTesen.ru
  • Я в "Linked In"

  • Мои друзья
  • Алекслёха
  • Latron

  • Links:
    log4j.ru
    Apache Maven
    моё родовое имение
    Виндсёрфинг


    Моё резюме
    My resume


    XFN Friendly

    Поиск