И класс AbstractAtomFeedView, и класс AbstractRssFeedView наследуются от базового класса AbstractFeedView и используются для передачи представлений веб-каналов Atom и RSS соответственно. Они основаны на проекте ROME и находятся в пакете org.springframework.web.servlet.view.feed.

AbstractAtomFeedView требует от вас реализации метода buildFeedEntries() и, опционально, переопределения метода buildFeedMetadata() (реализация по умолчанию пуста). В следующем примере показано, как это сделать:

Java
public class SampleContentAtomView extends AbstractAtomFeedView {
    @Override
    protected void buildFeedMetadata(Map<String, Object> model,
            Feed feed, HttpServletRequest request) {
        /// реализация опущена
    }
    @Override
    protected List<Entry> buildFeedEntries(Map<String, Object> model,
            HttpServletRequest request, HttpServletResponse response) throws Exception {
        /// реализация опущена
    }
}
Kotlin
class SampleContentAtomView : AbstractAtomFeedView() {
    override fun buildFeedMetadata(model: Map<String, Any>,
            feed: Feed, request: HttpServletRequest) {
        /// реализация опущена
    }
    override fun buildFeedEntries(model: Map<String, Any>,
            request: HttpServletRequest, response: HttpServletResponse): List<Entry> {
        /// реализация опущена
    }
}

Аналогичные требования применяются и для реализации AbstractRssFeedView, как показано в следующем примере:

Java
public class SampleContentRssView extends AbstractRssFeedView {
    @Override
    protected void buildFeedMetadata(Map<String, Object> model,
            Channel feed, HttpServletRequest request) {
        /// реализация опущена
    }
    @Override
    protected List<Item> buildFeedItems(Map<String, Object> model,
            HttpServletRequest request, HttpServletResponse response) throws Exception {
        /// реализация опущена
    }
}
Kotlin
class SampleContentRssView : AbstractRssFeedView() {
    override fun buildFeedMetadata(model: Map<String, Any>,
                                feed: Channel, request: HttpServletRequest) {
        /// реализация опущена
    }
    override fun buildFeedItems(model: Map<String, Any>,
            request: HttpServletRequest, response: HttpServletResponse): List<Item> {
        /// реализация опущена
    }
}

Методы buildFeedItems() и buildFeedEntries() передают HTTP-запрос, в случае если необходимо получить доступ к региональным настройкам. HTTP-ответ передается только для установки cookies или других HTTP-заголовков. Канал автоматически записывается в объект ответа после возврата метода.

Пример создания представления канала Atom см. в посте Алефа Арендсена в боле команды Spring.