gpt4 book ai didi

servlets - 注册 Sling Servlet 的方法 - Adob​​e AEM/CQ

转载 作者:行者123 更新时间:2023-12-02 14:41:42 26 4
gpt4 key购买 nike

根据 documentation 有两种注册 Sling Servlet 的方法

第一个是@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 上本地运行)。使用特定方法有什么区别或优势吗?

最佳答案

@SlingServlet 减少了创建 servlet 所需的样板文件。您列出的一些属性(例如 methods = "GET")已默认设置,因此您无需重新配置它。总之,它使注释更加简洁。

在内部,就像所有 SCR 注释一样,注释被转换为 XML 文件,因此您无法仅通过查看部署了代码的实例来区分 servlet 是如何实现的。

如果您想指定供应商或服务描述,则没有什么限制您添加额外的 @Property 定义。请注意,后一个实际上可以在 @SlingServlet 注释中使用,所以再次强调 - 您将立即从使用它中受益!

我还建议您阅读我的 collegue 的精彩演示。他描述了一些 AEM 开发最佳实践(包括您的 @SlingServlet 案例)。可以找到here

关于servlets - 注册 Sling Servlet 的方法 - Adob​​e AEM/CQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31609051/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com