7.8. 替代 Bean
替代方案是其实施特定于特定客户端模块或部署方案的 Bean。
默认情况下,@ Alternative be an 被禁用。通过编辑 Bean .xml 文件,为特定的 Bean 存档启用它们。但是,此激活仅适用于该存档中的 bean。您可以使用 @Priority 注释为整个应用启用替代选项。
示例:定义替代方案
这种替代方案定义了 PaymentProcessor 类的实施,该类同时使用 @Synchronous 和 @Asynchronous 替代方案:
示例:使用 beans.xml启用 @Alternative
声明所选替代方案
@Priority 注释允许为整个应用启用替代选项。可以为应用程序指定优先级:
-
将
@Priority注释放在受管 Bean 或会话 Bean 的 Bean 类上,或者 -
通过将
@Priority注释放置到 bean 类,以声明制作者方法、字段或资源。
7.8.1. 使用替代方案覆盖 Injection 复制链接链接已复制到粘贴板!
您可以使用备用 Bean 来覆盖现有的 Bean。它们可以想象成是插入同一角色的类的方法,但功能不同。默认情况下禁用它们。
此任务显示如何指定和启用替代方案。
覆盖 Injection
此任务假定项目中已有一个 TranslatingWelcome 类,但您想要使用"mock" TranslatingWelcome 类覆盖它。测试部署就是如此,因此无法使用 真实的转换器 Bean。
定义备选方案.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过将完全限定的类名称添加到您的
META-INF/beans.xml或WEB-INF/beans.xml文件来激活替换实施。<beans> <alternatives> <class>com.acme.MockTranslatingWelcome</class> </alternatives> </beans><beans> <alternatives> <class>com.acme.MockTranslatingWelcome</class> </alternatives> </beans>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
现在,使用替代的实现而不是原始实施。