通过XML可以定义bean构造型吗?有点像:
<bean ... stereotype="org.springframework.stereotype.Service">
</bean>
或,
<bean...>
<stereotype class="mypackage.myStereotype" />
</bean>
答案 0 :(得分:0)
无法动态地向类添加注释。对您的问题的简单回答是:不,不可能通过XML应用构造型注释。
然而,构造型注释通常仅用作AOP组件的标记注释(以及组件扫描)。您可以定义自己的AOP behavior。当然,您将无法使用任何内置的<xyz:annotation-driven \>
快捷方式声明/配置。
答案 1 :(得分:0)
最简单的解决方案可能是使用如下任意的spring bean元数据:
<bean id="fooService" class="org.example.FooServiceImpl">
<meta key="stereotype" value="mypackage.myStereotype" />
</bean>
spring-beans.xsd中元元素的定义是:
<xsd:complexType name="metaType">
<xsd:attribute name="key" type="xsd:string" use="required">
<xsd:annotation>
<xsd:documentation><![CDATA[
The key name of the metadata attribute being defined.
]]></xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="value" type="xsd:string" use="required">
<xsd:annotation>
<xsd:documentation><![CDATA[
The value of the metadata attribute being defined (as a simple String).
]]></xsd:documentation>
</xsd:annotation>
</xsd:attribute>
</xsd:complexType>
然后,您可以使用BeanDefinitionRegistry.getBeanDefinition(String)
和BeanDefinition.getAttribute(String name)
来读取bean的构造型并对其进行处理。
另一种可能性是使用spring bean schema authoring facilities。因此,您需要按照BeanDefinitionDecorator
。