Při definici našich spravovaných tříd v aplikačním kontextu můžeme díky pokročilým konverzním schopnostem rámce Spring™ snadno nastavit hodnoty atributů všech primitivních typů, typů kolekce a často používaných tříd. Následuje komplexní příklad:
<bean id="objekt_s_mnoha_atributy" class="com.TridaSMnohaAtributy">
<property name="booleanAttr" value="true" />
<property name="intAttr" value="3" />
<property name="doubleAttr" value="3.45" />
<!-- atribut typu java.lang.Class -->
<property name="classAttr" value="neco.NejakaTrida" />
<!-- lze použít speciální element null pro vyjádření prázdného odkazu
v atributu objektového typu -->
<property name="stringAttr"><value><null/></value></property>
<!-- atribut typu String[] -->
<property name="stringArrayAttr" value="retezec1,retezec2,retezec3">
<property name="listAttr">
<list>
<value>neco</value>
<value>cokoliv</value>
<value>kdokoliv</value>
</list>
</property>
<property name="setAttr">
<set>
<value>1</value>
<value>2</value>
<value>3</value>
</set>
</property>
<property name="mapAttr">
<map>
<entry key="auto">
<value>moto</value>
</entry>
<entry key="jedna">
<value>dva</value>
</entry>
<entry key="cokoliv">
<value>kdokoliv</value>
</entry>
</map>
</property>
<property name="propertiesAttr">
<props>
<prop key="auto">moto</prop>
<prop key="jedna">dva</prop>
</props>
</property>
</bean>
Příklad je natolik sebedokumentující, že není nutno jej příliš vysvětlovat. Snad jen dodejme, že princip konverze textových hodnot z konfiguračního souboru na konkrétní datové typy spočívá v kombinaci použití klasické javové reflexe a konceptu tzv. editorů vlastností (property editors), který je součástí standardu JavaBeans™. Spring pomocí reflexe zjistí typ daného atributu, na základě tohoto typu zvolí z registru editorů vhodný editor a použije jej pro konverzi z řetězce na cílový typ.
Implicitně je pro všechny objekty aplikačního kontextu
registrováno množství běžných existujících editorů pro primitivní typy z
balíku sun.bean.editors a také editorů rámce
Spring™ z balíku
org.springframework.beans.propertyeditors. Nic
ovšem nebrání vytvoření vlastního editoru pro konverzi řetězců na
vlastní objektový typ (viz třídy v balíku
cz.morosystems.sportportal.editors z přiložené
vzorové aplikace) a registraci tohoto editoru v aplikačním kontextu
rámce Spring™.
Lze přistupovat také k vnořeným vlastnostem JavaBeans™ a to následujícím způsobem:
<bean id="cokoliv" class="kdekoliv.Cokoliv"> <property name="skupina.vedouci.vek" value="23"/> </bean>
Je však nutné, aby vlastnost
skupina objektu
cokoliv neměla hodnotu
null a aby obsahovala
vlastnost vedouci, pro niž
platí totéž. Vlastnost vek pak
musí být skalárního typu.