Существует два способа регистрации сервлета Sling в соответствии с документацией.
Первый @SlingServlet
@SlingServlet(
resourceTypes = "sling/servlet/default",
selectors = "hello",
extensions = "html",
methods = "GET")
public class MyServlet extends SlingSafeMethodsServlet {
@Override
protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
...
}
}
Второй с использованием @Properties
@Component(metatype = true)
@Service(Servlet.class)
@Properties({
@Property(name = "sling.servlet.resourceTypes", value = "sling/servlet/default"),
@Property(name = "sling.servlet.selectors", value = "hello"),
@Property(name = "sling.servlet.extensions", value = "html"),
@Property(name = "sling.servlet.methods", value = "GET")
})
public class MyServlet extends SlingSafeMethodsServlet {
@Override
protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
...
}
}
Документация не перечисляет какие-либо преимущества конкретного подхода по сравнению с другими. Один из членов моей команды спросил об этом. Одна вещь, которую я мог бы придумать, это @Properties
позволить нам задавать настраиваемые свойства, которые можно изменить из консоли OSGi (http://localhost:4502/system/console/components, при условии, что CQ работает локально на порту 4502). Есть ли разница или преимущество использования конкретного подхода?