RSS 피드는 블로그 또는 홈페이지와 같은 웹 사이트와 최신 정보를 쉽게 사용할 수 있는 일종의 구독하기 방법 입니다.
사이트에서 RSS 피드를 제공 한 다면, 게시물이 올라가면 설정 해 놓은 사이트를 대상으로 알림을 받을 수 있으며 요약 또는 전체 게시물을 확인 할 수 있습니다.
Spring 환경에서의 기능 구현은 어렵지가 않습니다.
먼저 필요한 라이브러리를 받아 줍니다.
* Maven 기준
<dependency>
<groupId>com.rometools</groupId>
<artifactId>rome</artifactId>
<version>1.13.1</version>
</dependency>
* Gradle 기준
implementation group: 'com.rometools', name: 'rome', version: '1.13.1'
RSS Feed 의 구조는 큰 채널 안에서 item이 존재하는 모습으로 되어 있습니다.
체널의 기본 속성은 제목, 설명, 링크로 구성되어 있습니다.
아래 사진을 참조하여 주세요.
마찬가지로 Spring 내부에서도 이러한 규칙을 그대로 사용하여 기능을 만듭니다.
기능, 내용이 매우 직관적이므로 바로 소스코드를 살펴 보겠습니다.
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.rometools.rome.feed.rss.Channel;
import com.rometools.rome.feed.rss.Description;
import com.rometools.rome.feed.rss.Item;
import com.rometools.rome.feed.rss.Category;
@Controller
public class RssFeedController {
@RequestMapping(value ="/testRssFeed")
@ResponseBody
public Channel testRssFeed() {
return makeFeed();
}
private Channel makeFeed() {
//기본 FEED 정보
Channel channel = new Channel();
channel.setFeedType("rss_2.0");
channel.setTitle("xx사이트");
channel.setDescription("이곳은XX사이트 입니다");
channel.setLink("http://127.0.0.1:8080");
channel.setGenerator("InputTypeText");
channel.setPubDate(new Date());
List<Item> itemList = new ArrayList<Item>();
//발행할 새로운 소식
String array[][] = {
{"InputTypeText", "https://주소/newStory1","제목1","내 카테고리","설명1을 입력합니다."},
{"InputTypeText", "https://주소/newStory2","제목2","내 카테고리","설명2을 입력합니다."}
};
//소식을 item에 추가 합니다.
for(String data [] : array) {
Item item = new Item();
item.setAuthor(data[0]);
item.setLink(data[1]);
item.setTitle(data[2]);
Category category = new Category();
category.setValue(data[3]);
item.setCategories(Collections.singletonList(category));
Description descr = new Description();
descr.setValue(data[4]);
item.setDescription(descr);
item.setPubDate(new Date());
itemList.add(item);
channel.setItems(itemList);
}
return channel;
}
}
클래스와 메소드 명칭이 알아보기가 매우 쉽습니다.
저게 끝 입니다. :)
응답 형태가 xml형식으로 전환 되므로 따로 추가적인 작업을 해 줄 필요 없이 채널(Channel)을 반환하여 줍니다.
컨트롤러가 응답한 결과의 모습 입니다.
이상으로 Spring RSS Feed 기능 만들기(전자정부 RSS Feed)에 대해서 살펴 보았습니다.
궁금한점, 틀린부분은 언제든지 연락 주세요! : )
반응형
'Spring framework' 카테고리의 다른 글
전자정부(이클립스) 톰캣 10 구동(Eclipse run tomcat 10) (4) | 2021.08.04 |
---|---|
Spring 자주 사용되는 비지니스 로직, 컨트롤러 파일 업로드(Spring file upload, contoller) (1) | 2021.06.03 |
Spring RequestBody, RequestParam의 컨트롤러(Controller) (0) | 2020.12.07 |
Spring RequestBody RequestParam(스프링 RequestParam RequestBody) (0) | 2020.11.17 |
Spring 컴포넌트 스캔(Spring component scan, RootContext와 ServletContext)에 대한 간단 정리 (0) | 2020.07.28 |
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)
댓글