Spring MVCでRSSフィードを表示する
1前書き
このクイックチュートリアルでは、Spring MVCと
AbstractRssFeedView
クラスを使用して簡単なRSSフィードを作成する方法を説明します。
その後、私たちは簡単なREST APIも実装し、フィードをネットワーク経由で公開します。
2 RSSフィード
実装の詳細に入る前に、RSSとは何か、そしてそれがどのように機能するのかを簡単に見てみましょう。
RSSは、Webサイトからの更新をユーザーが簡単に追跡できるようにするWebフィードの一種です。さらに、
RSSフィードはサイトのコンテンツを要約したXMLファイルに基づいています
その後、ニュースアグリゲータは1つ以上のフィードを購読し、XMLが変更されたかどうかを定期的にチェックすることによって更新を表示できます。
3依存関係
まず第一に、
SpringのRSSサポートはROMEフレームワーク
に基づいているため、https://search.maven.org/classic/#artifactdetails%7Ccom.rometools%7Crome%7C1.10.0%7Cjar[追加する必要があります]これを実際に使用する前に、
__pom
__への依存関係として]をクリックします。
<dependency>
<groupId>com.rometools</groupId>
<artifactId>rome</artifactId>
<version>1.10.0</version>
</dependency>
ローマへのガイドはhttps://www.baeldung.com/rome-rss[前の記事]をご覧ください。
4フィード実装
次に、実際のフィードを作成します。そのためには、
AbstractRssFeedView
クラスを拡張し、その2つのメソッドを実装します。
最初のオブジェクトは入力として
Channel
オブジェクトを受け取り、それにフィードのメタデータを追加します。
-
もう一方はフィードの内容を表すアイテムのリストを返します** :
@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("[email protected]");
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);
}
}
5フィードを公開する
最後に、フィードをWeb上で利用できるようにするための簡単なRESTサービスを構築します。サービスは、作成したばかりのビューオブジェクトを返します。
@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フィードが表示されます。
<?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>[email protected]</author>
</item>
</channel>
</rss>
6. 結論
この記事では、SpringとROMEを使用して単純なRSSフィードを作成し、Webサービスを使用してそれを消費者が利用できるようにする方法について説明しました。
この例では、Spring Bootを使ってアプリケーションを起動しました。このトピックの詳細については、https://www.baeldung.com/spring-boot-start[Spring Bootに関するこの紹介記事を読み続けてください]。
いつものように、使用されているすべてのコードはhttps://github.com/eugenp/tutorials/tree/master/spring-boot-mvc[GitHubで利用可能]です。