Professional Documents
Culture Documents
What Is Sling Models in AEM?
What Is Sling Models in AEM?
What Is Sling Models in AEM?
Sling Models are annotation driven Java “POJO's” (Plain Old Java Objects) which are
mapped automatically with Sling Objects (like Resource, Request….) and allow us to
access JCR node property values directly into java classes via annotations.
Sling Models supports both class and interface.
A sling Model is implemented as an OSGi Bundle.
Basic Usage:
@Model (adaptables=Resource.class)
Public class UserModel {
@Inject
private String firstName; //property name or variable name or data member
@Inject
private String lastName;
}
1. WCMUsePojo will need to be extend from WCMUsePojo class, whereas Sling Models
can be standalone class with @Model annotation and no keyword
2. With Sling Models, it’s simpler and cleaner to retrieve common objects or property
values, instead of writing more line of code to use API
3. You may use Felix annotation @Reference to reference to an available OSGI service,
whereas in Sling Models, you will use @Inject or @OSGiService
4. With Sling Models API 1.3, you can serialize the model and export it as a JSON file with
Jackson exporter, so your front-end application can leverage the same model. It’s not
available for WCMUsePojo.
5. For WCMUsePojo, you will need to overwrite the activate () method, whereas in Sling
Models, your init () method will be called in the @PostConstruct annotation
Your site may need different configurations for different sites regions for instance where
some parameters may be shared requiring inheritance for nested contexts and global
fullback values. AEM leverages Sling context aware configurations, which enable this
possibility.