Adobe AEM 软件提供了几个类,它们可以采用 apache Sling Resource 并将其调整到另一个类,如下所示:
Page page = resource.adaptTo(Page.class);
要将此语法与您编写和控制的类一起使用,归结为简单地实现Adaptable接口。
然而,如果你想让一个资源适应你的新自定义类,似乎你必须实现 AdapterFactory 接口并在 OSGI 中注册它。
Adobe 网站是这样描述的:
通过AdapterFactory,它可以映射任意对象。对象仍然必须实现 Adaptable 接口并且必须扩展 SlingAdaptable(将 adaptTo 调用传递给中央适配器管理器)。 这允许挂钩到现有类的 adaptTo 机制,例如 Resource。
我已经浏览了 SlingScriptAdapterFactory 代码,但最终我没有在这里连接这些点。基本上我想这样做:
MyClass myClass = Resource.adaptTo(MyClass.class);
我是否创建了一个实现 AdapterFactory 的类,并简单地将它与包一起部署,期望 Sling 只会按类型找到它,还是还有更多?