7.9. 挪威

在许多系统中,使用架构模式会产生一组重复的 Bean 角色。stereotype 允许您识别此类角色,并声明具有该角色的 Bean 在中央位置的一些常见元数据。

stereotype 封装了以下任意组合:

  • 默认范围。
  • 组拦截器绑定。

stereotype 也可以指定:

  • 所有默认 bean EL 名称的 Bean。
  • 所有的 Bean 都是替代的 Bean。

Bean 可以声明零、一或多任。stereotype 是打包了几个其他注释的 @Stereotype 注释。stereotype 注解可应用到 bean 类、制作者方法或字段。

从 stereotype 中继承范围的类可以覆盖该 stereotype,并直接在 bean 上指定范围。

此外,如果 stereotype 具有 @Named 注释,则它所放入的任何 Bean 都具有默认的 Bean 名称。如果 Bean 上直接指定了 @Named 注释,则 bean 可以覆盖此名称。有关指定 Bean 的更多信息,请参阅命名 Bean

7.9.1. 使用 Stereotypes

无需考虑,注释就会变得模糊不清。此任务向您展示如何使用强制减少杂乱情况并简化代码。

示例:注解过滤器

@Secure
@Transactional
@RequestScoped
@Named
public class AccountManager {
  public boolean transfer(Account a, Account b) {
    ...
  }
}

定义和使用 Stereotypes
  1. 定义 stereotype。

    @Secure
    @Transactional
    @RequestScoped
    @Named
    @Stereotype
    @Retention(RUNTIME)
    @Target(TYPE)
    public @interface BusinessComponent {
     ...
    }
  2. 使用 stereotype。

    @BusinessComponent
    public class AccountManager {
      public boolean transfer(Account a, Account b) {
        ...
      }
    }