Disons que j'ai une classe Person
avec des propriétés name
et age
, et il peut être configuré avec le printemps comme ceci:Comment puis-je mélanger et faire correspondre des types de schéma Spring personnalisés avec des types de schémas Spring traditionnels?
<beans:bean id="person" class="com.mycompany.Person">
<beans:property name="name" value="Mike"/>
<beans:property name="age" value="38"/>
</beans:bean>
Je voudrais avoir un élément de schéma ressort personnalisé pour elle, qui est facile à ne, me permettant d'avoir dans mon fichier de configuration Spring:
<Person name="Mike" age="38"/>
La définition de schéma ressemblerait à quelque chose comme ceci:
<xsd:complexType name="Person">
<xsd:complexContent>
<xsd:extension base="beans:identifiedType">
<xsd:attribute name="name" type="xsd:string"/>
<xsd:attribute name="age" type="xsd:int"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
Sur cette base, disons maintenant, je voudrais la possibilité de mélanger et assortir mon élément de schéma personnalisé avec des éléments traditionnels et les attributs des haricots de printemps, que je puisse avoir la possibilité de le faire:
<Person name="Mike">
<beans:property name="age" value="38"/>
</Person>
Comment est-ce que j'irais faire ça? Cela est peut-être impossible sans une personnalisation majeure, mais j'espère qu'il existe un mécanisme assez simple pour y parvenir. Je pensais que l'extension de "haricot" pourrait être l'astuce, mais cela ne semble pas être correct.
Merci. J'ai écrit mon propre analyseur de définition de bean personnalisé et c'était en fait assez facile. Maintenant, j'essaie de le configurer pour que mes définitions de beans personnalisées puissent éventuellement contenir des éléments de définition de bean "normaux" imbriqués comme dans mon exemple ci-dessus. L'idée est que je peux choisir de créer des personnalisations pour les attributs les plus communs d'un haricot, mais en laisser les moins communs aux éléments traditionnels du printemps. – SingleShot
Un problème avec cette approche est que vous ne pouvez pas écrire votre XSD facilement. L'extension 'beans: identifyType' ne définit pas les éléments imbriqués; ils sont définis dans le groupe 'beanElements' qui ne peut pas être référencé de l'extérieur; vous devrez donc lister manuellement 'property' et tout ce que vous voulez dans votre XSD. Autre que cela, les éléments imbriqués devraient être manipulés pour vous automatiquement; jetez un oeil à l'espace de noms util de Spring et à ses gestionnaires/parseurs; celui de Map en particulier. – ChssPly76
@SingleShot des mises à jour/progrès sur votre analyseur de définition de bean personnalisé? – onejigtwojig