Spring mvc展示RSS Feed

33 篇文章 0 订阅
29 篇文章 2 订阅

Spring mvc展示RSS Feed

本文介绍如何使用Spring mvc及AbstractRssFeedView 类构建简单Rss Feed。同时实现简单REST API发布feed。

1. RSS Feed

Feed:

信源,理解成信息的源泉,英文是feed。信息发布网站将网站全部或者部分信息整合到一个 RSS 文件中,这个文件就被称之为 feed 。信源中包含的数据都是标准的 XML 格式,不但能直接被其他站点调用,也能在其他的终端和服务中使用.

RSS:

一般提供信源地址(RSS 输出)的网站都有这样的标识,点击这些标识,你就可以发现对应的信源地址(RSS 输出地址一个RSS文件就是一段规范的XML数据,该文件一般以rss,xml或者rdf作为后缀。

发布一个RSS文件(一般称为RSS Feed)后,这个RSS Feed中包含的信息就能直接被其他站点调用,而且由于这些数据都是标准的XML格式,所以也能在其他的终端和服务中使用,如PDA、手机、邮件列表等。而且一个网站联盟(比如专门讨论旅游的网站系列)也能通过互相调用彼此的RSS Feed,自动的显示网站联盟中其他站点上的最新信息,这就叫着RSS的联合。这种联合就导致一个站点的内容更新越及时、RSS Feed被调用的越多,该站点的知名度就会越高,从而形成一种良性循环。

2. 引用依赖

spring是基于Rome框架实现Rss功能,因此需引入rome依赖:

<dependency>
    <groupId>com.rometools</groupId>
    <artifactId>rome</artifactId>
    <version>1.10.0</version>
</dependency>

3. Feed 实现

接下来构建实际feed,需要继承AbstractRssFeedView 类并实现其两个方法。第一个接收Channel对象作为输入并填充feed的元数据。另一个返回表示feed内容项列表,实际应用中可以返回当前站点中的最新信息。

@Component
public class RssFeedView extends AbstractRssFeedView {
 
    @Override
    protected void buildFeedMetadata(Map<String, Object> model, 
      Channel feed, HttpServletRequest request) {
        feed.setTitle("Baeldung RSS Feed");
        feed.setDescription("Learn how to program in Java");
        feed.setLink("http://www.baeldung.com");
    }
 
    @Override
    protected List<Item> buildFeedItems(Map<String, Object> model, 
      HttpServletRequest request, HttpServletResponse response) {
        Item entryOne = new Item();
        entryOne.setTitle("JUnit 5 @Test Annotation");
        entryOne.setAuthor("donatohan.rimenti@gmail.com");
        entryOne.setLink("http://www.baeldung.com/junit-5-test-annotation");
        entryOne.setPubDate(Date.from(Instant.parse("2017-12-19T00:00:00Z")));
        return Arrays.asList(entryOne);
    }
}

4. 发布Feed

最后,使用简单的REST服务发布Feed,服务返回一个视图对象:

@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 Feed如下:

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>Baeldung RSS Feed</title>
        <link>http://www.baeldung.com</link>
        <description>Learn how to program in Java</description>
        <item>
            <title>JUnit 5 @Test Annotation</title>
            <link>http://www.baeldung.com/junit-5-test-annotation</link>
            <pubDate>Tue, 19 Dec 2017 00:00:00 GMT</pubDate>
            <author>donatohan.rimenti@gmail.com</author>
        </item>
    </channel>
</rss>

5. 总结

本文使用Spring 和 Rome实现简单Rss feed,使得订阅者可以通过网络服务消费Feed。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值