Sling Model 入门

Sling Model的作用

Entirely annotation driven. “Pure” POJOs.
纯注解驱动

Use standard annotations where possible.
尽可能的使用标准注释

Pluggable
可插入的

OOTB, support resource properties (via ValueMap), SlingBindings, OSGi services, request attributes.
支持资源属性(通过ValueMap)、SlingBindings、OSGi服务和请求属性

Adapt multiple objects - minimal required Resource and SlingHttpServletRequest
适应多个对象-最小所需Resource和SlingHttpServletRequest

Client doesn’t know/care that these objects are different than any other adapter factory
客户端不知道/不关心这些对象是否与其他适配器工厂不同

Support both classes and interfaces.
支持类和接口。

Work with existing Sling infrastructure (i.e. not require changes to other bundles).
使用现有Sling基础设施(即不需要更改其他捆绑包)。

基本用法

在最简单的情况下,用@Model和可适应的类对类进行注释。需要注入的字段用@Inject注释:

@Model(adaptables=Resource.class)
public class MyModel {

    @Inject
    private String propertyName;
}

在本例中,将从资源中查找名为“propertyName”的属性(首先将其调整为ValueMap之后)并注入该属性。


对于一个接口,也可以使用相似的方法:

@Model(adaptables=Resource.class)
public interface MyModel {

    @Inject
    String getPropertyName();
}

也支持构造函数注入(从Sling模型1.1.0开始):

@Model(adaptables=Resource.class)
public class MyModel {    
    @Inject
    public MyModel(@Named("propertyName") String propertyName) {
      // constructor code
    }
}

由于构造函数参数参数的名称无法通过Java反射API检测到,对于需要名称来解析注入的注入器,所以需要使用@Named注释。


下一章,将对一些注释的使用进行研究

  1. Names
  2. Optional and Required
  3. Defaults
  4. Collections
  5. OSGi Service Filters
  6. PostConstruct Methods
  7. Via
  8. Source
  9. Adaptations

原文地址:https://sling.apache.org/documentation/bundles/models.html#collections

你可能感兴趣的:(Sling Model 入门)