ABAP 里有没有类似 Spring @Autowired 的东西,答案比一句有没有更有意思
把 Spring 的@Autowired搬到 ABAP 世界里,最容易踩到的坑,是把它理解成一个单纯的语法糖。它确实是一个 annotation,但它背后真正有价值的部分,是 Spring IoC Container 负责创建对象、管理 Bean、解析依赖、选择候选实现,并在合适的生命周期点把依赖塞进去。Spring 官方文档对 Dependency Injection 的定义很直接,对象通过构造器参数、工厂方法参数或属性声明自己的依赖,Container 在创建 Bean 时负责注入这些依赖;这种模式把对象自己创建依赖的动作反过来交给容器处理,所以也和 Inversion of Control 放在一起讲。(Home)
ABAP 里没有一个标准的、语言级别的、和 Spring@Autowired一一对应的 annotation。也就是说,在普通 ABAP Objects 里,不能写一个类似下面这种东西,让 ABAP Runtime 自动扫描全系统类,把某个接口的实现类塞进属性里。
CLASS zcl_sales_service DEFINITION.PRIVATE SECT