
开门见山回答,标准 ABAP 语言里没有一个和 Angular@Inject一一对应的注解。Angular 的@Inject是 TypeScript 装饰器体系里的参数装饰器,它放在构造函数参数上,用来告诉 Angular 的 injector,当前这个参数应该按哪个 provider token 去解析。Angular 官方 API 对Inject的定义很明确,它是 constructor 依赖参数上的 parameter decorator,用来指定自定义 provider;如果不写@Inject,Angular injector 会默认使用参数类型作为 provider。(Angular)ABAP 的世界不是这样设计的。ABAP Objects 没有像 TypeScript decorator 或 Java annotation 那样,给构造函数参数挂一个运行时注入标记,再由统一 DI container 自动解析对象图的语言级机制。ABAP 当然有@形式的注解,但它主要出现在 CDS view、RAP、metadata extension 这类声明式建模场景里。SAP 对 CDS annotations 的说明是,ABAP annotations 用来定义 CDS 对象的技术属性和语义属性,并且会在对象激活或运行时被 ABAP framework 解释。这个机制服务的是数据模型、语义、框架行为,