Sangil's blog

https://github.com/ChoiSangIl Admin

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>

REPLY