2014-02-12 79 views
6

我是新來的Apache吊帶,CQ5等Apache Sling中resourceResolver.adaptTo(Session.class)的用途是什麼?

在我們的代碼庫,我們有一段代碼與此類似:

void perform(SlingHttpServletRequest request, SlingHttpServletResponse response) { 
    ResourceResolver resourceResolver = request.getResourceResolver(); 

    Session session = resourceResolver.adaptTo(Session.class); 
    PageManager pageManager = resourceResolver.adaptTo(PageManager.class); 
} 

什麼adapTo在這裏做什麼?

也有一個很好的文檔/用戶手冊可用我可以閱讀開始使用Sling,CQ5等?

回答

6

許多吊索物體中的adaptTo()方法允許「變形」物體。 Sling本可以決定添加一個resolver.getSession()方法,但這不會很靈活。 adaptTo的好處在於它是動態的。您可以創建適配器以在不同類型(它們是OSGi服務)之間進行轉換。 Sling和CQ5默認也包括bunch of adapters。吊索維基有一些關於adapters的文檔。

關於如何與吊帶和CQ5開始,該sling site是開始

+0

的好地方,但在'ResourceResolver'看起來更像是一個服務定位器。我的意思是,它轉變爲不同類型的課程,還是找到合適的課程並返回? – h2o

+1

它更像是一個工廠。此外,它取決於您所調用的特定適配的實現。通常它會創建一個新的對象,從原來的對象中取出必要的對象。 我想resourceResolver.adaptTo(PageManager.class)基本上做pageManagerFactory.getPageManager(resourceResolver) – santiagozky