본문 바로가기
블로그 이미지

방문해 주셔서 감사합니다! 항상 행복하세요!

  
   - 문의사항은 메일 또는 댓글로 언제든 연락주세요.
   - "해줘","답 내놔" 같은 질문은 답변드리지 않습니다.
   - 메일주소 : lts06069@naver.com


Spring framework

Spring RSS Feed 기능 만들기(전자정부 RSS Feed)

야근없는 행복한 삶을 위해 ~
by 마샤와 곰 2021. 5. 31.

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이 존재하는 모습으로 되어 있습니다.

체널의 기본 속성은 제목, 설명, 링크로 구성되어 있습니다.

아래 사진을 참조하여 주세요.

출처 : www.w3schools.com

 

마찬가지로 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)을 반환하여 줍니다.

컨트롤러가 응답한 결과의 모습 입니다.

xml 형식과 클래스, 메소드가 거의 비슷합니다!

 

이상으로 Spring RSS Feed 기능 만들기(전자정부 RSS Feed)에 대해서 살펴 보았습니다.

궁금한점, 틀린부분은 언제든지 연락 주세요! : )

반응형
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)

댓글