Es ist eigentlich schon eine ganze Weile her, dass ich mir Spring ME angesehen habe, aber dann erwähnte Davide Cerbo, dass er Spring ME auf Android bei einem Frühjahrstreffen in Rom vorgestellt hatte. Sehr cool! Das brachte mich dazu, über die Dinge nachzudenken, die - laut dem Dokument, das ich einmal darüber geschrieben hatte - noch nicht implementiert waren.
Eines der Dinge, von denen ich gesagt habe, dass sie fehlen, ist die Unterstützung von Namespaces. Aber ist sie das wirklich? Letzte Woche habe ich angefangen, daran zu zweifeln. Vielleicht war die Unterstützung ohnehin magisch und ich habe mir nur nie die Mühe gemacht, sie auszuprobieren.
Heute Abend habe ich es ausprobiert. Ich muss zugeben, dass es nicht sofort funktionierte, aber das hatte eher damit zu tun, dass Spring ME FactoryBean und InitializingBean noch nicht unterstützte, und da ich es mit utils:constant getestet habe, stellte sich heraus, dass die Unterstützung dafür erforderlich war. (FieldRetrievingFactoryBean implementiert diese beiden Schnittstellen.) Nachdem ich also die Unterstützung für FactoryBean und InitializingBean hinzugefügt hatte, funktionierte es problemlos. Zu meinem großen Erstaunen, muss ich sagen.
In meinem Test-Setup ist dies also meine Spring-Konfigurationsdatei:
<beans xsi="..." util="..." schemalocation="...">
<bean id="person" class="me.springframework.sample.namespaces.Person">
<Eigenschaft name="Alter">
<util:constant field="java.lang.Integer.MAX_VALUE">
</util:constant></property>
</bean>
</beans>
... und das ist es, was Spring ME erzeugt:
org.springframework.beans.factory.config.FieldRetrievingFactoryBean result =
new org.springframework.beans.factory.config.FieldRetrievingFactoryBean();
result.setStaticField("java.lang.Integer.MAX_VALUE");
result.afterPropertiesSet();
return result.getObject();
Das ist doch mal was! Beachten Sie, dass ich die FieldRetrievingFactoryBean nirgendwo in meiner Konfigurationsdatei definiere. Das basiert alles auf den Namespaces von Spring. Ausgehend davon habe ich das Gefühl, dass dies im Grunde für jeden Namespace funktionieren würde, solange die von Spring generierten Bean-Definitionen tatsächlich mit der Teilmenge von Spring kompatibel sind, die derzeit von Spring ME unterstützt wird.
Verfasst von

Wilfred Springer
Contact
Let’s discuss how we can support your journey.