SPRING BOOT ROME을 활용한 RSS FEED 만들기 DEV / WEB
2018-09-01 posted by sang12
ROME이란 자바프레임 워크로 RSS & ATOM FEED를 만들어 줍니다. 또한 오픈 소스이며 아파치2.0라이센스를 따릅니다. 해당 글을 읽기 전에 RSS를 잘 모르시는 분들은 http://sang12.co.kr/3 해당 링크를 보시고오면 좋습니다 ^^.
일단 ROME을 사용하기 위해, SPRING BOOT build.gradle에
compile group: 'com.rometools', name: 'rome', version: '1.11.0' 를 추가해줍니다.
그리고 http://sang12.co.kr/rss로 접속하면 RSS FEED를 보여주기 위해 컨트롤러를 추가해줍니다. 저는 기존에 사용하던 MainController에 추가했습니다.
@GetMapping("/rss")
@ResponseBody
public Channel rss() {
return commonService.getRssList();
}
그리고 위와 같이 컨트롤러에 /rss로 접속하면 공통서비스 쪽에서 rss리스트를 가져오도록 추가 했습니다.
-서비스 로직
public Channel getRssList() {
Channel channel = new Channel();
channel.setFeedType("rss_2.0");
channel.setTitle("Sang12 Blog");
channel.setDescription("Sangil's Blog");
channel.setLink("http://sang12.co.kr");
channel.setGenerator("Sang12 Blog");
Date postDate = new Date();
channel.setPubDate(postDate);
List- itemList = new ArrayList
- ();
Item item = new Item();
item.setAuthor("sang12");
item.setLink("http://sang12.co.kr/4");
item.setTitle("ROME을 활용한 RSS FEED 만들기");
com.rometools.rome.feed.rss.Category category = new com.rometools.rome.feed.rss.Category();
category.setValue("ROME");
item.setCategories(Collections.singletonList(category));
Description descr = new Description();
descr.setValue("ROME은 블라블라~");
item.setDescription(descr);
item.setPubDate(postDate);
itemList.add(item);
channel.setItems(itemList);
return channel;
}
네 그러면 준비가 끝났습니다. /RSS로 접속을 하게되면 위에 설정한 RSS FEED를 XML형태로 만들어줍니다. 위 서비스로직은 예를 들기 위해 item에 타이틀, description 등을 1개만 만들었지만, 실제로 서비스 할 때는 많은 게시물이 존재할 것입니다. 위 서비스 로직쪽을 수정하여서 게시글 수만큼 반복 하여 item 을 추가하여 채널에 세팅해주면 실제 게시물 수만큼의 RSS FEED를 생성 할 수 있습니다. 그리고 검색 엔진 (EX) 네이버/구글 등)에 해당 RSS 주소를 등록 해두면, 특정 시간마다 검색엔진이 정보를 수집하여 더 수월하게 게시물을 노출시킬 수 있습니다. 아래는 위 예제의 결과 값입니다.
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title>Sang12 Blog</title>
<link>http://sang12.co.kr</link>
<description>Sangil's Blog</description>
<pubDate>Sat, 01 Sep 2018 04:29:49 GMT</pubDate>
<generator>Sang12 Blog</generator>
<item>
<title>ROME을 활용한 RSS FEED 만들기</title>
<link>http://sang12.co.kr/4</link>
<description>ROME은 블라블라~</description>
<category>ROME</category>
<pubDate>Sat, 01 Sep 2018 04:29:49 GMT</pubDate>
<author>sang12</author>
</item>
</channel>
</rss>