KR20200040456A - 스프링(Spring)을 기반으로 한 애플리케이션에 플러그인을 제공하는 방법 및 장치 - Google Patents

스프링(Spring)을 기반으로 한 애플리케이션에 플러그인을 제공하는 방법 및 장치 Download PDF

Info

Publication number
KR20200040456A
KR20200040456A KR1020180120388A KR20180120388A KR20200040456A KR 20200040456 A KR20200040456 A KR 20200040456A KR 1020180120388 A KR1020180120388 A KR 1020180120388A KR 20180120388 A KR20180120388 A KR 20180120388A KR 20200040456 A KR20200040456 A KR 20200040456A
Authority
KR
South Korea
Prior art keywords
plug
application
memory
providing
objects
Prior art date
Application number
KR1020180120388A
Other languages
English (en)
Other versions
KR102191453B1 (ko
Inventor
임복출
이종혁
김봉석
Original Assignee
주식회사 위컴즈
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 위컴즈 filed Critical 주식회사 위컴즈
Priority to KR1020180120388A priority Critical patent/KR102191453B1/ko
Publication of KR20200040456A publication Critical patent/KR20200040456A/ko
Application granted granted Critical
Publication of KR102191453B1 publication Critical patent/KR102191453B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons

Abstract

스프링(Spring)을 기반으로 한 애플리케이션에 플러그인을 제공하는 방법 및 장치를 제시하며, 상기 애플리케이션의 객체 중 상기 플러그인에 연관된 플러그인객체를 식별하여 분류하는 객체분류부 및 상기 애플리케이션의 객체에서 이용되는 리소스 중 상기 플러그인객체에서 이용되는 리소스를 선택적으로 메모리에 로딩하는 플러그인객체관리부를 포함할 수 있다.

Description

스프링(Spring)을 기반으로 한 애플리케이션에 플러그인을 제공하는 방법 및 장치{METHOD AND APPARATUS FOR PROVIDING PLUG-IN TO APPLICATION DEVELOPED ON SPRING FRAMEWORK}
본 명세서에서 개시되는 실시예들은 스프링을 기반으로 한 애플리케이션에 플러그인을 제공하는 방법 및 장치에 관한 것으로, 보다 상세하게는 스프링을 기반으로 개발된 애플리케이션의 기능을 기능별로 변경이 용이하도록 플러그인 방식으로 변경되는 기능을 제공하는 플러그인제공방법 및 장치에 관한 것이다.
최근 들어 기업들은 기업의 업무를 보다 효과적으로 처리하기 위해 기업의 업무에 특화된 기업용 애플리케이션을 개발하거나 또는 기업의 특정 업무에 적합하도록 외부에서 개발된 애플리케이션을 구매하고 있다.
이를 위해, 프로그래머들은 기업의 업무에서 필요한 모든 기능을 식별하고, 식별된 모든 기능을 수행할 수 있는 애플리케이션을 개발하여 제공하는 것이 일반적이다.
이때, 애플리케이션에서 제공되는 기능 중 업데이트가 필요하거나 그 기능이 불필요한 경우, 해당 기능의 업데이트 또는 삭제를 위해 애플리케이션 전체를 업데이트하는 것이 일반적이다.
이를 위해, 프로그래머는 애플리케이션의 기능 갱신을 위해서는 전체 애플리케이션의 코드 중 업데이트가 필요한 코드를 수정하고, 코드가 수정된 애플리케이션의 전체 코드를 다시 컴파일을 수행하여 애플리케이션을 갱신해야 한다.
하지만, 애플리케이션의 일부 기능을 갱신하기 위해 애플리케이션의 전체 코드에 대해 컴파일을 수행함에 따라 애플리케이션의 일부 수정에 많은 시간이 소요되는 문제점이 있다.
또한, 애플리케이션의 일부 기능의 추가 또는 삭제 시에도 전체 애플리케이션의 코드 수정이 필요하여 기능의 추가 또는 삭제가 용이하지 않다는 문제점이 있다.
관련하여 선행기술 문헌인 한국특허공개번호 제10-2015-0104885 호는 플러그인을 이용한 웹-앱 연동 구조의 애플리케이션 표시 시스템에 관한 것으로서, 보다 구체적으로는 웹애플리케이션 개발을 위한 프로그램 및 웹-앱 연동을 지원하는 플러그인을 포함하는 웹 프레임워크를 설치 및 실행하고, 상기 플러그인을 이용하여 데이터를 입력하는 제1 유저 디바이스, 상기 제1 유저 디바이스로부터 상기 플러그인을 이용하여 입력된 데이터를 수신하며, 상기 수신한 데이터를 애플리케이션에 반영하여, 웹사이트와 상기 애플리케이션이 연동되도록 하는 서비스 서버, 및 상기 애플리케이션을 설치 및 실행하되, 상기 반영된 데이터에 따라 상기 애플리케이션을 변경하여 표시하는 제2 유저 디바이스를 포함하며, 상기 웹 프레임워크에서 입력된 데이터가 상기 웹사이트 및 애플리케이션에 반영되어 상호 연동되도록 할 뿐, 상술된 문제점을 해결할 수 없다.
따라서 상술된 문제점을 해결하기 위한 기술이 필요하게 되었다.
한편, 전술한 배경기술은 발명자가 본 발명의 도출을 위해 보유하고 있었거나, 본 발명의 도출 과정에서 습득한 기술 정보로서, 반드시 본 발명의 출원 전에 일반 공중에게 공개된 공지기술이라 할 수는 없다.
본 명세서에서 개시되는 실시예들은, 스프링을 기반으로 한 애플리케이션에 플러그인을 제공하는 방법 및 장치를 제시하는데 목적이 있다.
본 명세서에서 개시되는 실시예들은, 스프링에서 제공되는 컨테이너와 별개로 플러그인의 객체를 관리하는 별도의 컨테이너를 통해 리소스 로딩을 동적으로 수행하는 플러그인제공방법 및 장치를 제시하는데 목적이 있다.
본 명세서에서 개시되는 실시예들은, 애플리케이션 기능의 삭제 또는 추가를 플러그인 방식으로 애플리케이션을 업데이트하는 플러그인 기능을 지원하는 플러그인제공방법 및 장치를 제시하는데 목적이 있다.
본 명세서에서 개시되는 실시예들은, 애플리케이션에서 사용시 메모리에 로딩되는 리소스를 동적으로 제어할 수 있는 플러그인 기능을 지원하는 플러그인제공방법 및 장치를 제시하는데 목적이 있다.
상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 일 실시예에 따르면, 스프링(spring)을 기반으로 한 애플리케이션에 플러그인을 제공하는 장치에 있어서, 상기 애플리케이션의 객체 중 상기 플러그인에 연관된 플러그인객체를 식별하여 분류하는 객체분류부 및 상기 애플리케이션의 객체에서 이용되는 리소스 중 상기 플러그인객체에서 이용되는 리소스를 선택적으로 메모리에 로딩하는 플러그인객체관리부를 포함할 수 있다.
다른 실시예에 따르면, 플러그인제공장치가 플러그인 기능을 지원하는 플러그인제공방법에 있어서, 상기 애플리케이션의 객체 중 상기 플러그인에 연관된 플러그인객체를 식별하여 분류하는 단계 및 상기 애플리케이션의 객체에서 이용되는 리소스 중 상기 플러그인객체에서 이용되는 리소스를 선택적으로 메모리에 로딩하는 단계를 포함할 수 있다.
또 다른 실시예에 따르면, 플러그인제공방법을 수행하는 프로그램이 기록된 컴퓨터 판독이 가능한 기록매체로서, 상기 플러그인제공방법은, 상기 애플리케이션의 객체 중 상기 플러그인에 연관된 플러그인객체를 식별하여 분류하는 단계 및 상기 애플리케이션의 객체에서 이용되는 리소스 중 상기 플러그인객체에서 이용되는 리소스를 선택적으로 메모리에 로딩하는 단계를 포함할 수 있다.
다른 실시예에 따르면, 플러그인제공장치에 의해 수행되며, 플러그인제공방법을 수행하기 위해 기록매체에 저장된 컴퓨터프로그램으로서, 상기 플러그인제공방법은, 상기 애플리케이션의 객체 중 상기 플러그인에 연관된 플러그인객체를 식별하여 분류하는 단계 및 상기 애플리케이션의 객체에서 이용되는 리소스 중 상기 플러그인객체에서 이용되는 리소스를 선택적으로 메모리에 로딩하는 단계를 포함할 수 있다.
전술한 과제 해결 수단 중 어느 하나에 의하면, 스프링에서 제공되는 컨테이너를 변경하여 객체의 리소스를 가변적으로 메모리에 로딩하는 플러그인을 제공하는 방법 및 장치를 제시할 수 있다.
전술한 과제 해결 수단 중 어느 하나에 의하면, 애플리케이션 기능의 삭제 또는 추가를 플러그인 방식으로 함으로써 애플리케이션의 기능을 유연하게 변경할 수 있는 플러그인 기능을 지원하는 애플리케이션 제공 방법 및 장치를 제시할 수 있다.
전술한 과제 해결 수단 중 어느 하나에 의하면, 애플리케이션에서 사용시 메모리에 로딩되는 리소스를 동적으로 제어할 수 있도록 하여 플러그인을 통해 애플리케이션의 업데이트가 가능하도록 하는 플러그인을 제공하는 방법 및 장치를 제시할 수 있다.
개시되는 실시예들에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 개시되는 실시예들이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 일 실시예에 따른 플러그인제공장치를 도시한 블록도이다.
도 2는 일 실시예에 따른 플러그인제공방법을 설명하기 위한 순서도이다.
아래에서는 첨부한 도면을 참조하여 다양한 실시예들을 상세히 설명한다. 아래에서 설명되는 실시예들은 여러 가지 상이한 형태로 변형되어 실시될 수도 있다. 실시예들의 특징을 보다 명확히 설명하기 위하여, 이하의 실시예들이 속하는 기술분야에서 통상의 지식을 가진 자에게 널리 알려져 있는 사항들에 관해서 자세한 설명은 생략하였다. 그리고, 도면에서 실시예들의 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 구성이 다른 구성과 "연결"되어 있다고 할 때, 이는 ‘직접적으로 연결’되어 있는 경우뿐 아니라, ‘그 중간에 다른 구성을 사이에 두고 연결’되어 있는 경우도 포함한다. 또한, 어떤 구성이 어떤 구성을 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한, 그 외 다른 구성을 제외하는 것이 아니라 다른 구성들을 더 포함할 수도 있음을 의미한다.
이하 첨부된 도면을 참고하여 실시예들을 상세히 설명하기로 한다.
다만 이를 설명하기에 앞서, 아래에서 사용되는 용어들의 의미를 먼저 정의한다.
‘플러그인’은 애플리케이션이 제공하는 기능이 구현된 코드를 포함하는 프로그램으로 애플리케이션에 추가적으로 설치되어 애플리케이션의 기능을 추가시키거나 변경시킬 수 있다.
위에 정의한 용어 이외에 설명이 필요한 용어는 아래에서 각각 따로 설명한다.
도 1은 일 실시예에 플러그인제공장치(10)를 설명하기 위한 블록도이다.
플러그인제공장치(10)는 네트워크(N)를 통해 원격지의 서버에 접속하거나, 타 단말 및 서버와 연결 가능한 컴퓨터나 휴대용 단말기, 텔레비전, 웨어러블 디바이스(Wearable Device) 등으로 구현될 수 있다. 여기서, 컴퓨터는 예를 들어, 웹 브라우저(WEB Browser)가 탑재된 노트북, 데스크톱(desktop), 랩톱(laptop)등을 포함하고, 휴대용 단말기는 예를 들어, 휴대성과 이동성이 보장되는 무선 통신 장치로서, PCS(Personal Communication System), PDC(Personal Digital Cellular), PHS(Personal Handyphone System), PDA(Personal Digital Assistant), GSM(Global System for Mobile communications), IMT(International Mobile Telecommunication)-2000, CDMA(Code Division Multiple Access)-2000, W-CDMA(W-Code Division Multiple Access), Wibro(Wireless Broadband Internet), 스마트폰(Smart Phone), 모바일 WiMAX(Mobile Worldwide Interoperability for Microwave Access) 등과 같은 모든 종류의 핸드헬드(Handheld) 기반의 무선 통신 장치를 포함할 수 있다. 또한, 텔레비전은 IPTV(Internet Protocol Television), 인터넷 TV(Internet Television), 지상파 TV, 케이블 TV 등을 포함할 수 있다. 나아가 웨어러블 디바이스는 예를 들어, 시계, 안경, 액세서리, 의복, 신발 등 인체에 직접 착용 가능한 타입의 정보처리장치로서, 직접 또는 다른 정보처리장치를 통해 네트워크를 경유하여 원격지의 서버에 접속하거나 타 단말과 연결될 수 있다.
이러한 플러그인제공장치(10)는 스프링 기반의 엔터프라이즈 애플리케이션을 제공할 수 있다.
이때, ‘스프링(spring)’이란 애플리케이션을 개발하는 언어 중 하나인 자바를 기반으로 기업용 애플리케이션을 개발하기 위한 애플리케이션 프레임워크이다.
그리고 ‘컨테이너’란 프로그래머에 의해 작성된 코드의 처리과정을 독립적으로 수행하는 스프링의 구성으로 코드를 스스로 참조하여 객체의 생성과 소멸을 컨트롤할 수 있다.
이러한 스프링 기반의 개발된 애플리케이션은 객체의 생성, 사용, 제거, 관계설정 등과 같은 객체에 대한 컨트롤 제어권을 애플리케이션 코드가 갖는 것이 아닌 독립된 컨테이너가 갖고 있으며, 이를 제어 반전(IoC: Inversion of Controller)이라 한다.
이러한 특징으로 인해, 스프링 기반의 애플리케이션은 사용자에 의한 호출에 따라 컨테이너가 코드를 참조하여 객체를 관리한다. 컨테이너가 객체에서 이용되는 모든 리소스를 메모리에 로딩한다.
이에 플러그인제공장치(10)는 스프링 프레임워크에서 제공된는 컨테이너와 별도로 플러그인에 대한 객체를 관리하고, 플러그인에 의한 객체의 리소스를 메모리에 동적으로 관리하는 컨테이너를 제공한다.
이러한 플러그인제공장치(10)는, 입출력부(110), 제어부(120), 통신부(130) 및 메모리(140)를 포함할 수 있다.
입출력부(110)는 사용자로부터 입력을 수신하기 위한 입력부와, 작업의 수행 결과 또는 플러그인제공장치(10)의 상태 등의 정보를 표시하기 위한 출력부를 포함할 수 있다. 예를 들어, 입출력부(110)는 사용자 입력을 수신하는 조작 패널(operation panel) 및 화면을 표시하는 디스플레이 패널(display panel) 등을 포함할 수 있다.
구체적으로, 입력부는 키보드, 물리 버튼, 터치 스크린, 카메라 또는 마이크 등과 같이 다양한 형태의 사용자 입력을 수신할 수 있는 장치들을 포함할 수 있다. 또한, 출력부는 디스플레이 패널 또는 스피커 등을 포함할 수 있다. 다만, 이에 한정되지 않고 입출력부(110)는 다양한 입출력을 지원하는 구성을 포함할 수 있다.
제어부(120)는 플러그인제공장치(10)의 전체적인 동작을 제어하며, CPU 등과 같은 프로세서를 포함할 수 있다. 제어부(120)는 입출력부(110)를 통해 수신한 사용자 입력에 대응되는 동작을 수행하도록 플러그인제공장치(10)에 포함된 다른 구성들을 제어할 수 있다.
예를 들어, 제어부(120)는 메모리(140)에 저장된 프로그램을 실행시키거나, 메모리(140)에 저장된 파일을 읽어오거나, 새로운 파일을 메모리(140)에 저장할 수도 있다.
이러한 제어부(120)는 플러그인관리부(121), 객체분류부(122), 스프링객체관리부(123) 및 플러그인객체관리부(124)를 포함할 수 있다.
플러그인관리부(121)는 애플리케이션을 통해 제공되는 기능이 구현된 코드가 패키징된 플러그인을 관리할 수 있다.
하나의 실시예에 따라, 플러그인관리부(121)는 애플리케이션의 기능을 추가하거나 기능을 갱신하기 위한 프로그램인 플러그인을 애플리케이션에 추가 설치할 수 있다.
이를 위해, 플러그인관리부(121)는 서버(미도시)로부터 플러그인을 획득할 수 있다.
예를 들어, 플러그인관리부(121)는 애플리케이션이 제공하는 상담센터기능 중 고객의 문의 및 장애를 접수하는 기능을 제공하는 플러그인을 서버(미도시)로부터 획득할 수 있다.
또는 예를 들어, 플러그인관리부(121)는 애플리케이션이 제공하는 상담센터기능 중 접수 유형별, 장애발생 진행현황, 접수처리 현황 등을 분류하는 기능을 업데이트하는 플러그인을 획득할 수 있다.
그리고 플러그인관리부(121)는 획득된 플러그인을 애플리케이션에 설치할 수 있다.
예를 들어, 플러그인관리부(121)는 획득된 플러그인에 포함된 코드를 기초로 애플리케이션에 포함되는 코드를 갱신하거나 추가할 수 있다.
다른 실시예에 따라, 플러그인관리부(121)는 플러그인을 삭제하여 애플리케이션의 기능을 삭제할 수 있다.
예를 들어, 플러그인관리부(121)는 애플리케이션에 설치된 플러그인의 종류를 식별할 수 있고, 기 설치된 플러그인을 사용자의 입력에 따라 삭제할 수 있다.
또는 예를 들어, 플러그인관리부(121)은 획득된 플러그인과 사용하는 리소스가 중첩되어 실행시 충돌가능성이 있는 플러그인을 식별할 수 있고, 식별된 플러그인을 삭제할 수 있다.
그리고 객체분류부(122)는 애플리케이션의 객체 중 플러그인에 연관된 플러그인객체를 식별하여 분류할 수 있다.
예를 들어, 객체분류부(122)는 애플리케이션의 객체 중 플러그인을 제외한 애플리케이션의 코드에서 생성되는 객체를 식별할 수 있고, 식별된 객체를 제외한 나머지 객체에 대해 플러그인객체로 분류할 수 있다.
또는 예를 들어, 객체분류부(122)는 플러그인관리부(121)에서 획득한 플러그인의 코드에 의해 생성되는 객체인 플러그인객체를 식별할 수 있다.
이후, 객체분류부(122)는 애플리케이션의 객체 중 플러그인객체를 제외한 객체는 후술할 스프링객체관리부(123)를 통해 처리되도록 할 수 있고, 플러그인객체는 후술할 플러그인객체관리부(124)을 통해 처리되도록 할 수 있다.
그리고 스프링객체관리부(123)는 애플리케이션의 객체 중 스프링에서 제공되는 객체에서 이용되는 리소스를 메모리에 로딩할 수 있다.
즉, 스프링객체관리부(123)는 애플리케이션의 객체 중 객체분류부(122)에 의해 플러그인객체로 식별된 객체를 제외한 나머지 객체에서 이용되는 리소스를 메모리(140)에 로딩할 수 있다.
예를 들어, 스프링객체관리부(123)는 스프링 프레임워크에서 제공하는 컨테이너를 이용하여, 애플리케이션에서 플러그인을 제외한 나머지 코드에 의해 생성되는 객체에 대해 객체에서 이용되는 모든 리소스를 메모리(140)에 로딩되도록 할 수 있다.
그리고 플러그인객체관리부(124)는 플러그인에 포함되는 코드에 대응되는 기능에 대한 객체를 관리할 수 있다.
예를 들어, 플러그인객체관리부(124)는 애플리케이션의 객체 중 플러그인의 코드에 기초하여 플러그인의 기능에 대응되는 플러그인객체를 생성, 사용, 관계설정 및 삭제 중 적어도 하나를 수행할 수 있다.
그리고 플러그인객체관리부(124)는 플러그인객체에서 이용되는 리소스를 선택적으로 메모리(140)에 로딩할 수 있다.
하나의 실시예에 따라, 플러그인객체관리부(124)는 호출된 플러그인의 플러그인객체에서 이용되는 리소스를 메모리에 로딩할 수 있다.
예를 들어, 플러그인객체관리부(124)는 애플리케이션의 상담 기능 중 플러그인 기능인 고객문의에 대한 과정에서 산출되는 자료를 분석하는 기능의 호출에 따라 생성된 플러그인객체의 리소스를 메모리(140)에 로딩할 수 있다. 이때, 플러그인객체관리부(124)는 상담 기능 중 호출되지 않은 플러그기능인 문의 전송 기능에 대응되는 플러그인객체의 리소스는 메모리(140)에 로딩하지 않을 수 있다.
또 다른 실시예에 따라, 플러그인객체관리부(124)는 애플리케이션에서 사용되는 모든 리소스를 메모리(140)에 로딩하되, 호출되지 않는 플러그인의 플러그인객체에서 이용되는 리소스를 메모리(140)에서 선택적으로 삭제할 수 있다.
예를 들어, 플러그인객체관리부(124)는 애플리케이션의 실행에 따라 모든 플러그인에 대응되는 플러그인객체에서 이용되는 리소스를 모두 메모리(140)에 로딩할 수 있고, 기 설정된 시간을 초과하여 호출되지 않는 플러그인에 대응되는 플러그인객체에서 이용되는 리소스만을 메모리(140)에서 삭제할 수 있다.
이와 같이, 기존 스프링 프레임워크에서 제공되는 컨테이너와 별개로 플러그인에 의해 생성되는 플러그인객체를 관리하는 별도의 컨테이너를 제공하여 플러그인객체에서 이용되는 리소스의 동적 관리가 되도록 하여 플러그인을 이용한 애플리케이션의 업데이트가 가능하도록 할 수 있다.
통신부(130)는 다른 디바이스 또는 네트워크와 유무선 통신을 수행할 수 있다. 이를 위해, 통신부(130)는 다양한 유무선 통신 방법 중 적어도 하나를 지원하는 통신 모듈을 포함할 수 있다. 예를 들어, 통신 모듈은 칩셋(chipset)의 형태로 구현될 수 있다.
통신부(130)가 지원하는 무선 통신은, 예를 들어 Wi-Fi(Wireless Fidelity), Wi-Fi Direct, 블루투스(Bluetooth), UWB(Ultra Wide Band) 또는 NFC(Near Field Communication) 등일 수 있다. 또한, 통신부(130)가 지원하는 유선 통신은, 예를 들어 USB 또는 HDMI(High Definition Multimedia Interface) 등일 수 있다.
메모리(140)에는 파일, 어플리케이션 및 프로그램 등과 같은 다양한 종류의 데이터가 설치 및 저장될 수 있다. 제어부(120)는 메모리(140)에 저장된 데이터에 접근하여 이를 이용하거나, 또는 새로운 데이터를 메모리(140)에 저장할 수도 있다. 또한, 제어부(120)는 메모리(140)에 설치된 프로그램을 실행할 수도 있다.
이러한 메모리(140)는 애플리케이션의 객체에서 이용되는 리소스가 저장될 수 있다.
도 2 는 일 실시예에 따른 플러그인제공방법을 설명하기 위한 순서도이다.
도 2 에 도시된 실시예에 따른 플러그인제공방법은 도 1 에 도시된 플러그인제공장치(10)에서 시계열적으로 처리되는 단계들을 포함한다. 따라서, 이하에서 생략된 내용이라고 하더라도 도 에 도시된 플러그인제공장치(10)에 관하여 이상에서 기술한 내용은 도 2 에 도시된 실시예에 따른 플러그인제공방법에도 적용될 수 있다.
우선 플러그인제공장치(10)는 상기 애플리케이션을 통해 제공되는 기능이 구현된 코드가 패키징된 플러그인을 획득하여 관리할 수 있다(S2001).
즉, 플러그인제공장치(10)는 애플리케이션이 제공하는 기능에 대응되는 플러그인의 삭제, 추가 및 변경 중 적어도 하나를 수행할 수 있다.
예를 들어, 플러그인제공장치(10)는 상담 기능을 제공하는 애플리케이션에 대해 고객전화에 대응하여 자동 안내 및 분배 기능을 개선한 플러그인을 서버(미도시)로부터 획득할 수 있고, 획득된 플러그인을 설치하여 애플리케이션을 갱신할 수 있다.
그리고 플러그인제공장치(10)는 애플리케이션의 객체 중 플러그인에 연관된 플러그인객체를 식별하여 분류할 수 있다(S2002).
하나의 실시예에 따라, 플러그인제공장치(10)는 플러그인의 코드에 기초하여 플러그인객체를 식별하여 분류할 수 있다.
예를 들어, 플러그인제공장치(10)는 S2001단계에서 애플리케이션에 반영된 플러그인 리스트를 통해 애플리케이션의 객체 중 플러그인에 의해 생성되거나 갱신된 객체를 식별할 수 있다.
다른 실시예에 따라, 플러그인제공장치(10)는 스프링에서 제공되는 컨테이너에 의해 처리되는 객체를 식별할 수 있고, 식별된 객체를 제외한 나머지 객체를 플러그인객체로 분류할 수 있다.
예를 들어, 플러그인제공장치(10)는 스프링에서 제공되는 컨테이너에 의해 제어되는 애플리케이션의 기본 코드를 제외한 나머지 코드에 의해 생성되는 객체를 플러그인객체로 식별하여 분류할 수 있다.
S2002단계에서 분류된 객체가 플러그인객체를 제외한 나머지 객체의 경우, 플러그인제공장치(10)는 스프링에서 제공되는 컨테이너로 전달하여 객체에서 이용되는 리소스를 메모리에 로딩할 수 있다(S2003).
예를 들어, 플러그인제공장치(10)는 스프링에서 제공된 컨테이너를 통해 애플리케이션의 코드 중 플러그인의 코드를 제외한 코드가 이용되어 생성된 객체에 대해 객체에서 이용되는 모든 리소스를 메모리에 로딩할 수 있다.
이와 달리, S2002단계에서 분류된 객체가 플러그인객체인 경우, 플러그인제공장치(10)는 스프링에서 제공되는 컨테이너에 의해 관리되는 객체와 별도로 플러그인객체를 관리할 수 있고, 플러그인객체에서 이용되는 리소스를 선택적으로 메모리에 로딩할 수 있다(S2004).
예를 들어, 플러그인제공장치(10)는 하나의 실시예에 따라 호출된 플러그인의 플러그인객체에서 이용되는 리소스를 메모리에 로딩할 수 있다.
예를 들어, 플러그인제공장치(10)는 애플리케이션의 상담 기능 중 플러그인 기능인 처리현황을 실시간 모니터링을 지원하는 기능의 호출에 따라 생성된 플러그인객체의 리소스만을 메모리에 로딩할 수 있다.
또 다른 실시예에 따라, 플러그인제공장치(10)는 애플리케이션에서 사용되는 모든 리소스를 메모리에 로딩하되, 호출되지 않는 플러그인의 플러그인객체에서 이용되는 리소스를 메모리에서 선택적으로 삭제할 수 있다.
예를 들어, 플러그인제공장치(10)는 애플리케이션의 실행에 따라 모든 플러그인에 대응되는 플러그인객체에서 이용되는 리소스를 모두 메모리에 로딩할 수 있고, 기 설정된 시간을 초과하여 호출되지 않는 플러그인에 대응되는 플러그인객체에서 이용되는 리소스만을 메모리에서 삭제할 수 있다.
이와 같이 스프링에서 객체를 관리하는 컨테이너와 별개로 플러그인에 의해 생성되는 플러그인객체를 별도로 관리하여 플러그인객체에서 이용되는 리소스를 동적으로 핸들링함으로써 플러그인을 통한 애플리케이션 업데이트가 가능하도록 할 수 있다.
이상의 실시예들에서 사용되는 '~부'라는 용어는 소프트웨어 또는 FPGA(field programmable gate array) 또는 ASIC 와 같은 하드웨어 구성요소를 의미하며, '~부'는 어떤 역할들을 수행한다. 그렇지만 '~부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '~부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '~부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램특허 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다.
구성요소들과 '~부'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~부'들로 결합되거나 추가적인 구성요소들과 '~부'들로부터 분리될 수 있다.
뿐만 아니라, 구성요소들 및 '~부'들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU 들을 재생시키도록 구현될 수도 있다.
도 2 를 통해 설명된 실시예에 따른 플러그인제공방법은 컴퓨터에 의해 실행 가능한 명령어 및 데이터를 저장하는, 컴퓨터로 판독 가능한 매체의 형태로도 구현될 수 있다. 이때, 명령어 및 데이터는 프로그램 코드의 형태로 저장될 수 있으며, 프로세서에 의해 실행되었을 때, 소정의 프로그램 모듈을 생성하여 소정의 동작을 수행할 수 있다. 또한, 컴퓨터로 판독 가능한 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터로 판독 가능한 매체는 컴퓨터 기록 매체일 수 있는데, 컴퓨터 기록 매체는 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함할 수 있다.예를 들어, 컴퓨터 기록 매체는 HDD 및 SSD 등과 같은 마그네틱 저장 매체, CD, DVD 및 블루레이 디스크 등과 같은 광학적 기록 매체, 또는 네트워크를 통해 접근 가능한 서버에 포함되는 메모리일 수 있다.
또한 도 2 를 통해 설명된 실시예에 따른 플러그인제공방법은 컴퓨터에 의해 실행 가능한 명령어를 포함하는 컴퓨터 프로그램(또는 컴퓨터 프로그램 제품)으로 구현될 수도 있다. 컴퓨터 프로그램은 프로세서에 의해 처리되는 프로그래밍 가능한 기계 명령어를 포함하고, 고레벨 프로그래밍 언어(High-level Programming Language), 객체 지향 프로그래밍 언어(Object-oriented Programming Language), 어셈블리 언어 또는 기계 언어 등으로 구현될 수 있다. 또한 컴퓨터 프로그램은 유형의 컴퓨터 판독가능 기록매체(예를 들어, 메모리, 하드디스크, 자기/광학 매체 또는 SSD(Solid-State Drive) 등)에 기록될 수 있다.
따라서 도 2 를 통해 설명된 실시예에 따른 플러그인제공방법은 상술한 바와 같은 컴퓨터 프로그램이 컴퓨팅 장치에 의해 실행됨으로써 구현될 수 있다. 컴퓨팅 장치는 프로세서와, 메모리와, 저장 장치와, 메모리 및 고속 확장포트에 접속하고 있는 고속 인터페이스와, 저속 버스와 저장 장치에 접속하고 있는 저속 인터페이스 중 적어도 일부를 포함할 수 있다. 이러한 성분들 각각은 다양한 버스를 이용하여 서로 접속되어 있으며, 공통 머더보드에 탑재되거나 다른 적절한 방식으로 장착될 수 있다.
여기서 프로세서는 컴퓨팅 장치 내에서 명령어를 처리할 수 있는데, 이런 명령어로는, 예컨대 고속 인터페이스에 접속된 디스플레이처럼 외부 입력, 출력 장치상에 GUI(Graphic User Interface)를 제공하기 위한 그래픽 정보를 표시하기 위해 메모리나 저장 장치에 저장된 명령어를 들 수 있다. 다른 실시예로서, 다수의 프로세서 및(또는) 다수의 버스가 적절히 다수의 메모리 및 메모리 형태와 함께 이용될 수 있다. 또한 프로세서는 독립적인 다수의 아날로그 및(또는) 디지털 프로세서를 포함하는 칩들이 이루는 칩셋으로 구현될 수 있다.
또한 메모리는 컴퓨팅 장치 내에서 정보를 저장한다. 일례로, 메모리는 휘발성 메모리 유닛 또는 그들의 집합으로 구성될 수 있다. 다른 예로, 메모리는 비휘발성 메모리 유닛 또는 그들의 집합으로 구성될 수 있다. 또한 메모리는 예컨대, 자기 혹은 광 디스크와 같이 다른 형태의 컴퓨터 판독 가능한 매체일 수도 있다.
그리고 저장장치는 컴퓨팅 장치에게 대용량의 저장공간을 제공할 수 있다. 저장 장치는 컴퓨터 판독 가능한 매체이거나 이런 매체를 포함하는 구성일 수 있으며, 예를 들어 SAN(Storage Area Network) 내의 장치들이나 다른 구성도 포함할 수 있고, 플로피 디스크 장치, 하드 디스크 장치, 광 디스크 장치, 혹은 테이프 장치, 플래시 메모리, 그와 유사한 다른 반도체 메모리 장치 혹은 장치 어레이일 수 있다.
상술된 실시예들은 예시를 위한 것이며, 상술된 실시예들이 속하는 기술분야의 통상의 지식을 가진 자는 상술된 실시예들이 갖는 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 상술된 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 명세서를 통해 보호 받고자 하는 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태를 포함하는 것으로 해석되어야 한다.
10: 플러그인제공장치
110: 입출력부
120: 제어부
121: 플러그인관리부 122: 객체분류부
123: 스프링객체관리부 124: 플러그인객체관리부
130: 통신부
140: 메모리

Claims (14)

  1. 스프링(spring)을 기반으로 한 애플리케이션에 플러그인을 제공하는 장치에 있어서,
    상기 애플리케이션의 객체 중 상기 플러그인에 연관된 플러그인객체를 식별하여 분류하는 객체분류부; 및
    상기 애플리케이션의 객체에서 이용되는 리소스 중 상기 플러그인객체에서 이용되는 리소스를 선택적으로 메모리에 로딩하는 플러그인객체관리부를 포함하는 플러그인제공장치.
  2. 제 1 항에 있어서,
    상기 플러그인제공장치는,
    상기 애플리케이션을 통해 제공되는 기능이 구현된 코드가 패키징된 플러그인을 관리하는 플러그인관리부를 더 포함하는, 플러그인제공장치.
  3. 제 2 항에 있어서,
    상기 플러그인관리부는,
    상기 애플리케이션이 제공하는 기능에 대응되는 플러그인의 삭제, 추가 및 변경 중 적어도 하나를 수행하는, 플러그인제공장치.
  4. 제 1 항에 있어서,
    상기 플러그인제공장치는,
    상기 애플리케이션의 객체 중 상기 플러그인객체를 제외한 객체에서 이용되는 리소스를 메모리에 로딩하는 스프링객체관리부를 더 포함하는, 플러그인제공장치.
  5. 제 1 항에 있어서,
    상기 플러그인객체관리부는,
    상기 플러그인이 호출되면, 호출된 플러그인에 대응되는 객체에서 이용되는 리소스를 메모리에 로딩하는, 플러그인제공장치.
  6. 제 1 항에 있어서,
    상기 플러그인객체관리부는,
    상기 플러그인이 삭제되면, 삭제된 플러그인에 대응되는 객체에서 이용되는 리소스를 메모리에서 삭제하는, 플러그인제공장치.
  7. 플러그인제공장치가 스프링을 기반으로 한 애플리케이션에 플러그인을 제공하는 방법에 있어서,
    상기 애플리케이션의 객체 중 상기 플러그인에 연관된 플러그인객체를 식별하여 분류하는 단계; 및
    상기 애플리케이션의 객체에서 이용되는 리소스 중 상기 플러그인객체에서 이용되는 리소스를 선택적으로 메모리에 로딩하는 단계를 포함하는, 플러그인제공방법.
  8. 제 7 항에 있어서,
    상기 플러그인제공방법은,
    상기 애플리케이션을 통해 제공되는 기능이 구현된 코드가 패키징된 플러그인을 관리하는 단계를 더 포함하는, 플러그인제공방법.
  9. 제 8 항에 있어서,
    상기 플러그인을 관리하는 단계는,
    상기 애플리케이션이 제공하는 기능에 대응되는 플러그인의 삭제, 추가 및 변경 중 적어도 하나를 수행하는 단계를 포함하는, 플러그인제공방법.
  10. 제 7 항에 있어서,
    상기 플러그인제공방법은,
    상기 애플리케이션의 객체 중 상기 플러그인객체를 제외한 객체에서 이용되는 리소스를 메모리에 로딩하는 단계를 더 포함하는, 플러그인제공방법.
  11. 제 7 항에 있어서,
    상기 리소스를 메모리에 선택적으로 로딩하는 단계는,
    상기 플러그인이 호출되면, 호출된 플러그인에 대응되는 객체에서 이용되는 리소스를 메모리에 로딩하는 단계를 포함하는, 플러그인제공방법.
  12. 제 7 항에 있어서,
    상기 리소스를 메모리에 선택적으로 로딩하는 단계는,
    상기 플러그인이 삭제되면, 삭제된 플러그인에 대응되는 객체에서 이용되는 리소스를 메모리에서 삭제하는 단계를 포함하는, 플러그인제공방법.
  13. 제 7 항에 기재된 방법을 수행하는 프로그램이 기록된 컴퓨터 판독 가능한 기록 매체.
  14. 플러그인제공장치에 의해 수행되며, 제 7 항에 기재된 방법을 수행하기 위해 매체에 저장된 컴퓨터 프로그램.
KR1020180120388A 2018-10-10 2018-10-10 스프링(Spring)을 기반으로 한 애플리케이션에 플러그인을 제공하는 방법 및 장치 KR102191453B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180120388A KR102191453B1 (ko) 2018-10-10 2018-10-10 스프링(Spring)을 기반으로 한 애플리케이션에 플러그인을 제공하는 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180120388A KR102191453B1 (ko) 2018-10-10 2018-10-10 스프링(Spring)을 기반으로 한 애플리케이션에 플러그인을 제공하는 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20200040456A true KR20200040456A (ko) 2020-04-20
KR102191453B1 KR102191453B1 (ko) 2020-12-15

Family

ID=70467325

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180120388A KR102191453B1 (ko) 2018-10-10 2018-10-10 스프링(Spring)을 기반으로 한 애플리케이션에 플러그인을 제공하는 방법 및 장치

Country Status (1)

Country Link
KR (1) KR102191453B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111475193A (zh) * 2020-06-04 2020-07-31 成都安易迅科技有限公司 一种插件的动态更新方法、装置,电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090070786A1 (en) * 2007-09-11 2009-03-12 Bea Systems, Inc. Xml-based event processing networks for event server
CN102662656A (zh) * 2012-03-15 2012-09-12 北京神州数码思特奇信息技术股份有限公司 一种程序结构插件化方法及系统
KR20140071292A (ko) * 2014-04-16 2014-06-11 주식회사 제이티엘소프트 애플리케이션의 구조와 메소드 호출 시퀀스를 시각적으로 표현하는 비주얼 스프링 개발 환경 시스템
KR20180110395A (ko) * 2017-03-29 2018-10-10 삼성전자주식회사 플러그인 서비스를 포함하는 결제 서비스 제공 방법 및 그 전자장치

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090070786A1 (en) * 2007-09-11 2009-03-12 Bea Systems, Inc. Xml-based event processing networks for event server
CN102662656A (zh) * 2012-03-15 2012-09-12 北京神州数码思特奇信息技术股份有限公司 一种程序结构插件化方法及系统
KR20140071292A (ko) * 2014-04-16 2014-06-11 주식회사 제이티엘소프트 애플리케이션의 구조와 메소드 호출 시퀀스를 시각적으로 표현하는 비주얼 스프링 개발 환경 시스템
KR20180110395A (ko) * 2017-03-29 2018-10-10 삼성전자주식회사 플러그인 서비스를 포함하는 결제 서비스 제공 방법 및 그 전자장치

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111475193A (zh) * 2020-06-04 2020-07-31 成都安易迅科技有限公司 一种插件的动态更新方法、装置,电子设备及存储介质

Also Published As

Publication number Publication date
KR102191453B1 (ko) 2020-12-15

Similar Documents

Publication Publication Date Title
KR102010508B1 (ko) 소스 코드 파일을 업데이트하는 시스템 및 방법
KR102277172B1 (ko) 인공 신경망 선택 장치 및 방법
US9733927B2 (en) Detection of software or hardware incompatibilities in software packages
US9841953B2 (en) Pluggable components for runtime-image generation
KR20200023207A (ko) 배달기사의 상태에 기초한 배달정보 제공 방법 및 장치
JP6412276B2 (ja) 仮想マシン作成方法及び装置
US20210318907A1 (en) Method, device and storage medium for data management
CN104137071A (zh) 用于脚本编译的简档数据的持久性存储
US20170052780A1 (en) Methods and Apparatus to Adapt Legacy Applications to Target Platforms
CN113568680A (zh) 应用程序的动态链接库保护方法、装置、设备及介质
KR101291123B1 (ko) 휴대 단말의 어플리케이션 관리 제어 방법 및 장치와 그 방법을 실행하기 위한 프로그램이 기록된 기록 매체
KR102191453B1 (ko) 스프링(Spring)을 기반으로 한 애플리케이션에 플러그인을 제공하는 방법 및 장치
KR102116395B1 (ko) 애플리케이션 테스트 방법 및 장치
KR20200027730A (ko) 운송 중개 플랫폼 제공 방법 및 장치
WO2020135129A1 (zh) 加载应用的插件的方法、装置和终端
CN110018831B (zh) 程序处理方法、装置及计算机可读存储介质
US10097588B2 (en) Method and system for configuring simple kernel access control policy for android-based mobile terminal
US20160313990A1 (en) Extensibility bundles for a cloud and devices suite
KR101945918B1 (ko) 메모리의 쓰기를 제어하는 뉴럴네트워크 수행 방법 및 장치
US11762985B2 (en) Systems and methods for protecting files indirectly related to user activity
KR102119509B1 (ko) 안정적인 실행을 보장하는 OpenCL 가상화 실행환경 제공 방법 및 장치
US11528236B2 (en) User-based data tiering
KR102033040B1 (ko) 휘발성 메모리를 이용한 데이터 보호 방법 및 장치
KR20180120966A (ko) 결함 추적 방법 및 결함 추적 장치
US8977814B1 (en) Information lifecycle management for binding content

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant