anchor.diff:  }
   ----
   
  +通过这个额外的类，我们可以实现框架如下：
  +
   [source,{java_source_attr}]
   ----
   class HardcodedFrameworkImpl implements Framework {
  
positive.code: }
  ----
  
  [[general-information]]
  === 基本信息
  
negative.code: }
  ----
  
  在此框架中，`Secured` 注解应用于标记只能由给定用户访问的方法。`UserHolder` 用于在全局范围内定义当前登录到应用程序的用户。`Framework` 接口允许通过调用给定类型的默认构造函数来创建安全实例。当然，这个框架过于简单，但是，从本质上来说，即使流行的安全框架，例如 http://projects.spring.io/spring-security/[Spring Security]，也是这样实现的。这个安全框架的一个特点是我们过滤用户的类型。通过调用我们框架的接口，我们承诺返回给用户任何类型 `T` 的实例。幸亏这样，用户能够透明地他自己的类型进行交互，就像安全框架根本不存在一样。在测试环境中，用户甚至可以创建其类型的不安全实例，使用这些实例来代替安全实例。你会同意这真的很方便！已知这种框架使用 POJO，普通的旧 Java 对象进行交互，这是一种用于描述不侵入框架的术语，这些框架不会将自己的类型强加给用户。
  
  现在，想象一下，假如我们知道传递给 `Framework` 的类型只能是 `T = Service`，而且 `deleteEverything` 方法用 `@Secured("ADMIN")` 注解。这样，我们可以通过简单的子类化来轻松实现这种特定类型的安全版本：
  
  [source,{java_source_attr}]
  ----
  