假设我有一个类Person
,其属性为name
和age
,并且可以使用Spring进行配置:
<beans:bean id="person" class="com.mycompany.Person">
<beans:property name="name" value="Mike"/>
<beans:property name="age" value="38"/>
</beans:bean>
我希望有一个自定义的Spring架构元素,这很容易做到,允许我在Spring配置文件中使用它:
<Person name="Mike" age="38"/>
架构定义如下所示:
<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>
基于此,我们现在说我想选择将我的自定义架构元素与Spring bean的传统元素和属性混合和匹配,所以我可以选择这样做:
<Person name="Mike">
<beans:property name="age" value="38"/>
</Person>
我该怎么做呢?如果没有一些主要的定制,也许这是不可能的,但我希望有一些相当简单的机制来实现这一目标。我认为扩展“bean”可能是诀窍,但这看起来并不正确。
答案 0 :(得分:1)
首先,如果你的例子真的你想要做的一切,那么考虑改用p-namespace来节省一些主要的头痛:
<beans:bean id="person" class="com.mycompany.Person" p:name="Mike" p:age="38"/>
是的,它看起来不像<Person name= age= />
那么漂亮,但没有自定义代码可写: - )
如果这不满足您的要求,那么您正在考虑实现自己的命名空间/ bean定义解析器。 Spring文档有一个chapter dedicated to that,它会更好地解释它。如果您遇到任何问题,请回复具体问题,我会尽力提供帮助。