Показать RSS-канал с Spring MVC

Отображение RSS-канала с Spring MVC

1. Вступление

Это краткое руководство покажет, как создать простой RSS-канал с использованием Spring MVC и классаAbstractRssFeedView.

После этого мы также реализуем простой REST API - чтобы передавать наш канал по сети.

2. Новостная лента

Прежде чем вдаваться в подробности реализации, давайте кратко рассмотрим, что такое RSS и как он работает.

RSS - это вид веб-канала, который позволяет пользователю легко отслеживать обновления с веб-сайта. Более того,RSS feeds are based on an XML file which summarizes the content of a site.. Агрегатор новостей может подписаться на один или несколько каналов и отображать обновления, регулярно проверяя, изменился ли XML.

3. зависимости

Прежде всего, посколькуSpring’s RSS support is based on the ROME framework,we’ll need to add it as a dependency для нашегоpom , прежде чем мы сможем его использовать:


    com.rometools
    rome
    1.10.0

Чтобы получить путеводитель по Риму, посмотрите нашprevious article.

4. Реализация фида

Далее мы собираемся создать собственно фид. Для этогоwe’ll extend the AbstractRssFeedView class and implement two of its methods.

Первый получит на входе объектChannel и заполнит его метаданными канала.

The other will return a list of items which represents the feed’s content:

@Component
public class RssFeedView extends AbstractRssFeedView {

    @Override
    protected void buildFeedMetadata(Map model,
      Channel feed, HttpServletRequest request) {
        feed.setTitle("example RSS Feed");
        feed.setDescription("Learn how to program in Java");
        feed.setLink("http://www.example.com");
    }

    @Override
    protected List buildFeedItems(Map model,
      HttpServletRequest request, HttpServletResponse response) {
        Item entryOne = new Item();
        entryOne.setTitle("JUnit 5 @Test Annotation");
        entryOne.setAuthor("[email protected]");
        entryOne.setLink("http://www.example.com/junit-5-test-annotation");
        entryOne.setPubDate(Date.from(Instant.parse("2017-12-19T00:00:00Z")));
        return Arrays.asList(entryOne);
    }
}

5. Открытие фида

Наконец, мы собираемся создать простую службу REST дляmake our feed available on the web. Сервис вернет объект просмотра, который мы только что создали:

@RestController
public class RssFeedController {

    @Autowired
    private RssFeedView view;

    @GetMapping("/rss")
    public View getFeed() {
        return view;
    }
}

Кроме того, поскольку мы используем Spring Boot для запуска нашего приложения, мы реализуем простой класс запуска:

@SpringBootApplication
public class RssFeedApplication {
    public static void main(final String[] args) {
        SpringApplication.run(RssFeedApplication.class, args);
    }
}

После запуска нашего приложения при выполнении запроса к нашей службе мы увидим следующий RSS-канал:



    
        example RSS Feed
        http://www.example.com
        Learn how to program in Java
        
            JUnit 5 @Test Annotation
            http://www.example.com/junit-5-test-annotation
            Tue, 19 Dec 2017 00:00:00 GMT
            [email protected]
        
    

6. Заключение

В этой статье рассказывалось, как создать простой канал RSS с использованием Spring и ROME и сделать его доступным для пользователей с помощью веб-службы.

В нашем примере мы использовали Spring Boot для запуска нашего приложения. Для получения дополнительной информации по этой темеcontinue reading this introductory article on Spring Boot.

Как всегда, весь используемый код доступенover on GitHub.