전자 정부 프레임 워크 구조 | 3.웹개발 코스 [스프링 프레임워크 + 전자정부 프레임워크] 상위 32개 베스트 답변

당신은 주제를 찾고 있습니까 “전자 정부 프레임 워크 구조 – 3.웹개발 코스 [스프링 프레임워크 + 전자정부 프레임워크]“? 다음 카테고리의 웹사이트 you.maxfit.vn 에서 귀하의 모든 질문에 답변해 드립니다: you.maxfit.vn/blog. 바로 아래에서 답을 찾을 수 있습니다. 작성자 개발자PARK 이(가) 작성한 기사에는 조회수 20,166회 및 좋아요 67개 개의 좋아요가 있습니다.

전자 정부 프레임 워크 구조 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 3.웹개발 코스 [스프링 프레임워크 + 전자정부 프레임워크] – 전자 정부 프레임 워크 구조 주제에 대한 세부정보를 참조하세요

더 많은 강의를 보고싶으시면: https://www.inflearn.com/users/259835
강사가 동영상에 남긴말은:https://www.inflearn.com/course/%EC%9B%B9%EA%B0%9C%EB%B0%9C-%EC%BD%94%EC%8A%A4-%EC%8A%A4%ED%94%84%EB%A7%81-%EC%A0%84%EC%9E%90%EC%A0%95%EB%B6%80
저작자,저작권소유자:개발자PARK

전자 정부 프레임 워크 구조 주제에 대한 자세한 내용은 여기를 참조하세요.

[Spring]전자정부프레임워크 구조 파악하기 – 네이버 블로그

하지만 독자적인 Database 구축해야하는 전자정부프레임워크는 Server와 Database의 경계가 명확한데 오늘 MVC 구조를 파악해보겠습니다.

+ 여기를 클릭

Source: m.blog.naver.com

Date Published: 10/7/2021

View: 6758

전자정부 프레임워크) eGovFrame 소개 및 Spring Frame과 …

그리고, 어플리케이션 틀과 구조를 프레임워크에서 제어하고, 프레임워크 위에서 개발자의 코드가 동작한다. 2. 라이브러리. 라이브러리는 소프트웨어를 …

+ 여기를 클릭

Source: ss-o.tistory.com

Date Published: 8/4/2022

View: 589

아키텍쳐 – 실행환경 | 표준프레임워크 포털 eGovFrame

전자정부 표준프레임워크 실행환경은 7개 서비스 그룹으로 구성되며 38개 서비스를 제공합니다. 실행환경 서비스 구조는 아래 그림과 같습니다.

+ 여기에 표시

Source: www.egovframe.go.kr

Date Published: 10/18/2021

View: 4342

[Spring/eGov] #3 스프링 기본 구조 / Sample 예제 프로젝트 …

https://extsdd.tistory.com/98 [Spring/eGov] #2 아파치 톰캣 설치 및 스프링 프로젝트 연동 / 셈플 예제 / WAS 구동 / 이클립스-톰캣 저번시간 …

+ 여기에 더 보기

Source: extsdd.tistory.com

Date Published: 4/8/2021

View: 9189

전자정부 표준프레임워크(eGovFrame) 소개(1)

2. 전자정부 프레임워크 란? 등장 배경; 특징; 왜 이것을 사용할까? 실행 환경. 3. eGov Framework vs Spring Framework …

+ 여기를 클릭

Source: engineering-skcc.github.io

Date Published: 4/25/2022

View: 901

전자정부프레임워크 기본 구조(라고 내가 생각하는 부분)

전자정부프레임워크 기본 구조(라고 내가 생각하는 부분). 전자정부프레임워크로 처음 개발을 할 때. 그러니까 날코딩이나 클래스정도 겨우 사용을 할 …

+ 더 읽기

Source: web-obj.tistory.com

Date Published: 7/24/2021

View: 7141

[전자정부 프레임워크] eGovframework 웹 어플리케이션 개발

[전자정부 프레임워크] eGovframework 웹 어플리케이션 개발_02 전자정부 프레임워크 구조 아키텍처 및 사용했다는 기준???!! 땜질하J 2019. 7. 2.

+ 여기에 더 보기

Source: jays-lab.tistory.com

Date Published: 7/30/2021

View: 4117

전자정부프레임워크 Spring 기초 환경 구축 – velog

frontcontroller의 구조를 가지고 있음클라이언트 – 요청 하면 frontcontroller의 서블릿 : Dispatcher Servlet프론트컨트롤러에서 실행 클래스를 …

+ 여기에 보기

Source: velog.io

Date Published: 3/10/2021

View: 5963

전자정부프레임워크 3일차 – 프레임워크 구조 분석(반복)

오늘은 점심에 교육이 있어 오전에 분석좀 하다가 교육듣고 정리해야겠다. [Spring/eGov ] #8 이클립스에서 마리아DB 데이터 조회하기 / MyBatis …

+ 더 읽기

Source: ailiartsua.tistory.com

Date Published: 10/24/2022

View: 2672

주제와 관련된 이미지 전자 정부 프레임 워크 구조

주제와 관련된 더 많은 사진을 참조하십시오 3.웹개발 코스 [스프링 프레임워크 + 전자정부 프레임워크]. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

3.웹개발 코스 [스프링 프레임워크 + 전자정부 프레임워크]
3.웹개발 코스 [스프링 프레임워크 + 전자정부 프레임워크]

주제에 대한 기사 평가 전자 정부 프레임 워크 구조

  • Author: 개발자PARK
  • Views: 조회수 20,166회
  • Likes: 좋아요 67개
  • Date Published: 2019. 11. 17.
  • Video Url link: https://www.youtube.com/watch?v=UWHRIk1XHZk

[Spring]전자정부프레임워크 구조 파악하기

XML 파일을 작성해줘야합니다.

SQl문을 보면 별 것 없습니다. user테이블에서 아이디와 비밀번호가 일치하는 login_id, name을 반환하라 입니다.

파라미터에서 넘어오는 값들은 #으로 감싸주면 사용할 수 있습니다.

그리고 select id=”userDAO.login”을 봅시다.

아까 DAO 파일에서 select 뒤에 나오는 함수명과 같은 걸로 맞춰줘야합니다.

작성 순서가 헷갈릴 수 있는데 향후에 순서대로 작성하는 법을 포스팅하겠습니다.

CDATA[]의 역할은 간단합니다.

쿼리 내부에 조건절 구현을 위해 < > 기호를 사용할 수 있는데 XML 특성상 < >기호는 태그를 열고 닫는데 쓰입니다. 그럼 의도치한게 태그가 닫히면서 문법오류가 나는데 그걸 방지하기 위한 문법입니다.

CDATA[] 내부에 <> 기호가 있어도 단순 문자열로 여기게 됩니다.

SQL 함수에서 DELLIMITER 역할로 여기시면 됩니다.

또한 parameterClass=”java.util.Map” resultClass=”egovMap”를 추가해 줘야하는데

이것은 파라미터 형태를 정의해놓고, 결과값을 어떤형식으로 반환할 것인지 정해주는 것입니다.

egov 로 해줘야합니다.

전자정부 프레임워크) eGovFrame 소개 및 Spring Frame과 차이점

반응형

* 본 포스팅을 무단 복제하시거나 배포하지 마시기 바랍니다.

( 게시글 최상단에 본 블로그 출처를 밝히시면 포스팅은 가능합니다. )

1탄 eGovFrame 소개 및 Spring Frame과 차이점

2탄 eGovFrame 구성 및 아키텍쳐

3탄 eGovFrame 개발 환경 설치 ( v3.10.0 )

4탄 eGovFrame 개발 환경 Maven 환경설정 및 예제 프로젝트 생성 ( v3.10.0 )

5탄 eGovFrame 개발 환경 Maven 빌드 및 Junit test 실습 ( v3.10.0 )

6탄 eGovFrame 실행 환경 실습 1탄 ( v3.10.0 )

7탄 eGovFrame 실행 환경 실습 2탄 Simple Homepage Project 실습 – DB 연동 ( v3.10.0 )

8탄 eGovFrame 실행 환경 실습 3탄 Common All-in-one Project 실습 – DB 연동 ( v3.10.0 )

본론에 들어가기 전 프레임워크와 라이브러리의 차이점을 짚고 가야한다.

1. 프레임워크

프레임워크를 직역하여 해석하면 제공받은 일정한 요소와 틀 규약을 가지고 무언가를 만드는 일이다.

이를 IT에 접목시키면 특정 프로그램을 개발하기 위한 여러 요소들과 메뉴얼인 룰을 제공하는 프로그램으로 Spring, Django, Ruby on Rails 등이 이에 속한다.

그리고, 어플리케이션 틀과 구조를 프레임워크에서 제어하고, 프레임워크 위에서 개발자의 코드가 동작한다.

2. 라이브러리

라이브러리는 소프트웨어를 개발하기 쉽게 어떤 기능을 제공하는 도구의 모음이며, Java에서 Guava, Apache common library, … C++ 에서는 STL 등이 이에 속한다.

그리고, 개발자의 코드 안에서만 재사용된다.

정리하면,

프레임워크와 라이브러리는 프로그램을 쉽게 만들 수 있게하는 공통된 목적이 있지만,

프레임워크는 정해진 규약을 지켜야하고 라이브러리는 정해진 규약이 없는 차이점이 있다.

1. 전자정부 프레임워크 소개

정확한 명칭은 전자정부 표준프레임워크(eGovFrame)이며, 행정안전부 산하기관인 한국정보화진흥원에서 만든 웹 기반 어플리케이션 프레임워크이다.

정부 및 공공기관, 공기업 등의 웹사이트에서 자주 쓰이는 공통 기능들을 Java의 Spring 프레임워크와 유명 Java 라이브러리(iBatis/MyBatis, Jackson, Apache Commons 등)를 가지고 미리 만들어 놓은 공통 컴포넌트와 이를 개발하는 개발환경, 실행환경, 운영환경, 관리환경 등으로 구성되어 있다.

즉, 대한민국 공공 부분 정보화 사업시 플랫폼별 표준화된 개발 프레임워크이며, java 기반의 정보시스템 구축에 활용할 수 있는 개발, 운영 표준 환경을 제공한다. ( 기존의 대체품은 아님 )

2. 전자정부 프레임워크 특징

출처 : eGovFrame 공식 홈페이지

3. 전자정부 프레임워크 적용 효과

정보시스템을 개발하거나 운영할 때 필요한 기본 기능을 미리 구현한 것으로 이를 기반으로 추가 기능을 개발하여 조립함으로써 전체 정보시스템을 완성할 수 있다.

출처 : eGovFrame 공식 홈페이지

4. eGov Framework vs Spring Framework

전자정부프레임워크가 스프링을 기반으로 만들어졌기 때문에 두 프레임워크가 같은 것으로 취급하기도 하는데 eGov에서 제공하고 있는 표준프레임워크 적용 가이드를 읽어보면 둘의 차이점이 존재한다.

먼저, Spring Framework 에 대해 짚고 가면 spring은 java를 활용하여 프로젝트 시작 시 뼈대를 제공해준다.이 뼈대는 누구나 사용할 법한 것을 의미하며 spring의 뼈대를 이용하여 배민에서 쓰면서 배민만의 고유한 기능을 넣어서 이름을 붙이면 배민프레임워크가 되고, 네이버에서 쓰면서 네이버만의 고유한 기능을 넣어서 이름을 붙이면 네이버프레임워크가 된다.

이것처럼 전자정부프레임워크는 대한민국 정부에서 정부의 프로젝트들을 미리 Spring + @ 로 가공한 형태로 제공한 것으로 정리하면 스프링 기반의 대한민국 정부에서 만들어놓은 일종의 2차 가공 프레임워크이다.

Spring Framework와 달리 전자정부프레임워크를 사용하기 위해서는 DAO단에서 전자정부프레임워크에서 만들어 둔 DAO를 꼭 extends하여 구현해야하며, 이게 적용되지 않으면 전자정부프레임워크 요건에 어긋나서 전자정부프레임워크라고 할 수가 없다.

표준 프레임워크 적용 가이드에 명시된 둘의 차이점을 정리하면

1. /WEB-INF/lib 폴더 아래에 egovframework.rte로 시작하는 .jar 파일 존재 여부

2. import egovframework.rt 라는 구문이 검색되는 소스코드가 있는지 확인

3. MyBatis나 iBatis를 사용한다면 DAO 클래스(@Repository)는 EgovAbstractDAO(iBatis) 또는 EgovAbstractMapper(MyBatis)를 상속하는 구문이 존재하는지 확인

4. JPA 등의 ORM을 사용한다면 DAO에서 SessionFactory 또는 EntityManagerFactory 설정을 통해 HibernateTemplate/JpaTemplate를 활용하거나, HibernateDaoSupport/JpaDaoSupport를 상속하여 활용

위의 4가지로 볼 수 있다.

반응형

표준프레임워크 포털 eGovFrame

주요 특징

전자정부 표준프레임워크 실행환경의 주요 특징은 다음과 같습니다.

실행환경 경량화 : 하나의 파일로 일괄 배포 및 설치되던 실행환경을 필수적 부분과 선택적 부분으로 나누어 배포하여 각 사업에 적합한 최적의 실행환경을 구성

실행환경 사용시 ‘필수적인 서비스’들과 타 서비스의 ‘의존성이 높은 서비스’들을 “핵심 계층”으로 제공

실행환경 사용에 필수적이지 않은 서비스들은 “선택계층”으로 분류하여 각 사업에서 선택적으로 설치할 수 있도록 제공

핵심서비스는 기본적으로 설치되며 이외 각 사업에서 필요한 서비스는 개발환경에서 선택적으로 설치 가능

공통기반 AOP, Cache, Compress/Decompress, Encryption/Decryption, Mail, File Handling, File Upload/Download, ID Generation, Resource, Ioc Container, Logging, Marshalling/Unmarshalling, Property, Object Pooling, Scheduling, Server Security, String Util, FTP, Excel, XML Manipulation 화면처리 Ajax Support, Internationalization, MVC, Security, UI Adaptor 모바일 화면처리 jQuery, Jquery Mobile 데이터처리 Data Access, Data Source, ORM, Transaction 연계통합 Naming Service, Web Service, Intergration Service 업무처리 Process Control, Exception Handling 배치처리 job Configuration, Step Configuration, ItemReader/ItemWriter, job Execution, Step Execution, Tasklet, job Respository, Scalability, job Runner, Jbo Launcher, History Management, Skip/Repeat/Retry, Sync/Async Processing, Pre/Post Processing

구성

전자정부 표준프레임워크 실행환경은 7개 서비스 그룹으로 구성되며 38개 서비스를 제공합니다. 실행환경 서비스 구조는 아래 그림과 같습니다.

화면처리

화면처리 서비스그룹은 업무처리 서비스와 사용자간의 인터페이스 를 담당하는 서비스로 사용자 화면 구성 및 사용자 입력 정보 검증 등의 기능을 지원합니다.

Ajax Support Ajax는 대화식 웹 애플리케이션의 제작을 위해 HTML과 CSS, DOM, 자바 스크립트, XML, XSLT 등과 같은 조합을 이용하는 웹 개발 기법으로 Ajax 기능 지원을 위한 Custom Tag Library를 제공 Internationalization Internationalization은 다양한 지역과 언어 환경을 지원할 수 있는 서비스로, 서버 설정 및 클라이언트 브라우저 환경에 따라 자동화된 다국어 기능을 제공 MVC MVC 디자인 패턴을 적용하여 사용자 화면을 개발할 수 있도록 MVC 기반 구조를 제공 Security 웹 응용프로그램 작성 시 발생될 수 있는 웹 보안상의 취약점(XSS, SQL Injection 등)에 대응하기 위한 기능을 제공 UI Adaptor 화면 레이어의 구현 방식에 따라 업무로직 레이어가 변경되는 것을 막기 위해서, 업무처리 Layer에서 사용할 데이터 타입을 정의하고, 화면 레이어에서 사용하는 in/out parameter를 해당 구현 방식에 맞게 변환해주는 기능 제공

모바일 화면처리

모바일 화면처리 서비스는 모바일 디바이스에 최적화 된 모바일 웹의 사용성과 편의성 증대를 위한 사용자 경험 기능을 제공합니다.

모바일 UX 컴포넌트 (15종) Panel, Label/Text, Tabs, Form, Grid, Table/List View, Icon, Button, Menu, Dialog, Date/Time Picker, Check/Radio, Selector/Switch, Internal/External Link, Processing Dialog/Bar Button 형태 : 둥근, 사각(2형)

색상 : 검정,파랑,회색,흰색,노랑,빨강,초록(7종)

크기 : 가로 – 넓이에 맞춰서 제공, 세로 – normal & small Panel 색상 : 검정, 파랑, 회색, 흰색, 노랑, 빨강, 초록(7종) Internal/External Link Link(5종) : Link Internal, Link external, Email, Phone links, Error page Label/Text 색상, 크기, 정렬, 폰트 지정 Tabs 모양 : Normal tab, Round tab(2종) Form 요소 : Text, search inputs, Slider, form 등

색상 : 검정, 파랑, 회색, 흰색, 노랑, 빨강, 초록(7종) Menu 효과 : slide, slideup, slidedown, pop, fade, flip, turn, flow, slidefade(9종)

형태 : Dialog, Grid, List, Collapsible(4종) Processing Dialog/Bar Processing Dialog(1종)

Processing Bar(1종) Dialog 형태 : Action, Sheet, Overlay, Alert, Prompt, Comfirm(5종)

색상 : 검정, 파랑, 회색, 흰색, 노랑, 빨강, 초록(7종) Grid View 1/2, 1/3, 1/4, 1/5 Grid View

가변 Grid View Table/List View Numbered list, Thumbnalis, Count bubble, Icon List, Split button list, Change Mode List 등 Date/Time Picker Android/Popup/Flip Date Picker, Android(12/24h)/Flip Time Picker Check/Radio 형태, 효과 : Normal, Group Icon 형태,색상 : 모영 별, 색상 별 아이콘 지원 Selector/Switches 모양 : Normal, Group

효과 : 선택 색상 변경 효과, 팝업 효과 등

데이터처리

배치처리 서비스는 일괄 데이터 처리를 위한 설정 및 실행 기능을 제공합니다.

Data Access 다양한 데이터베이스 솔루션 및 데이터베이스 접근 기술에 대한 추상화된 접근 방식을 제공하여 업무 로직과 데이터베이스 솔루션 및 접근 기술 간의 종속성을 배제하기 위한 기능을 제공 Data Source 다양한 방식의 데이터베이스 연결을 제공하고, 이에 대한 추상화 계층을 제공함으로써, 업무 로직과 데이터베이스 연결 방식 간의 종속성을 배제하기 위한 기능을 제공 ORM 객체 모델과 관계형 데이터베이스 간의 매핑 기능인 ORM (Object-Relational Mapping) 기능을 제공함으로서, SQL이 아닌 객체를 이용한 업무 로직의 작성이 가능하도록 지원 Transaction Database Transaction을 처리하기 위한 서비스로서, Transaction 처리에 대한 추상화된 방법을 제공하여 일관성 있는 프로그래밍 모델을 제공

배치처리

배치처리 서비스는 일괄 데이터 처리를 위한 설정 및 실행 기능을 제공합니다.

Job Configuration 배치 Job 설정 기능 제공 Step Configuration 배치 Step 설정 기능 제공 ItemReader/ItemWriter 리소스 유형에 따른 File/DB 처리 기능 제공 Job Execution Job Instance의 수행 기능 제공 Step Execution Step Instance의 수행 기능 제공 Tasklet Job의 실행중 배치 작업 외 단순처리가 필요한 작업(파일이동 등)의 처리기능을 제공 Job Repository JobExecution, StepExecution 정보를 저장 Job Runner Scheduler, CommandLine (CronTab), Http/Webservice 방식 지원 인터페이스 제공 Job Launcher Job Repository 및 실행 방법 설정 기능 제공 History Management JobRepository와 이력관리 기능 제공 Scalability Partitioning 기능 제공 Sync / Async Processing JobLauncher 설정을 통한 동기/비동기 처리 기능 제공 Parallel Processing Job 설정을 사용하여 병렬처리 기능 제공 Pre/Post Processing Listener를 사용한 전처리/후처리 Event Handling 기능 제공 Skip/Repeat/Retry 건너뛰기, 반복, 재시도 기능 제공

연계통합

연계통합 레이어는 타 시스템과의 연동기능을 지원합니다.

Naming Service 원격에 있는 모듈 및 자원 등을 찾아주는 기능을 제공 Web Service 연계 등을 위하여 업무 서비스를 웹서비스의 형태로 어플리케이션 외부에 노출시켜 타 시스템이나 어플리케이션에서 서비스를 이용할 수 있도록 하는 기능을 제공 Integration Service 전자정부 시스템과의 연계를 위한 공통 인터페이스를 제공하여, 다양한 솔루션 연계 방식에 대한 표준 처리 방식을 제공

공통기반

공통기반 서비스는 실행환경 서비스 간에 공통적으로 사용되는 기능을 제공합니다.

AOP 관점지향 프로그래밍(Aspect Oriented Programming AOP) 사상을 구현하고 지원 Cache 빈번히 사용되는 컨텐츠에 대해서 빠른 접근을 가능하게 하는 기능으로 잦은 접근을 통한 오버헤드나 시간을 단축시키는 역할을 함 Compress/Decompress 데이터를 압축 및 복원하는 기능을 제공한다. 데이터를 효율적으로 저장 및 전송하기 위해 원본 데이터를 압축하거나 압축된 데이터를 복원하여 원본 데이터를 구하는데 사용될 수 있음 Encryption/Decryption 데이터에 대한 암호화 및 복호화 기능을 제공하며, 네트워크를 통한 데이터 송수신을 시 보안을 목적으로 사용될 수 있음 Excel 엑셀 파일 포맷을 다룰 수 있는 자바 라이브러리를 제공 File Handling File 생성 및 접근, 변경을 위해 File에 Access할 수 있는 기능을 제공 File Upload/Download 화면처리 서비스 그룹에서 사용되며, 파일을 업로드 및 다운로드 하기 위한 기능을 제공 FTP FTP(File Transfer Protocol) 프로토콜을 이용하여 데이터(파일)을 주고받기 위한 FTP 클라이언트 기능을 제공 ID Generation UUID(Universal Unique Identifier) 표준에 따라 시스템에서 사용하는 ID(Identifier)를 생성하는 기능을 제공 IoC Container 프레임워크의 기본 기능인 IoC(Inversion of Control) 컨테이너 기능을 제공 Logging System.out.println 문을 사용한 오버헤드를 줄이고, 간편한 설정을 통해 로그를 저장하고 통제할 수 있는 기능을 제공 Mail SMTP 표준을 준수하며 이메일을 송신할 수 있도록 이메일 클라이언트 기능을 제공 Marshalling/Unmarshalling 객체를 특정 데이터 형식으로 변환하고, 반대로 특정 데이터 형식으로 작성된 데이터를 객체로 변환하는 기능을 제공 Object Pooling Pool에 사용 가능한 객체가 있을 경우 객체를 할당 받거나, 없을 경우 Pool 크기에 따라 새로운 객체 생성 및 할당하는 기능을 제공 Property 외부 파일이나 환경 정보를 구성하는 키와 값의 쌍을 내부적으로 저장하고 있으며, 어플리케이션이 특정 키에 대한 값에 접근할 수 있도록 기능을 제공 Resource 국제화(Internationalization) 및 현지화(Localization)를 지원하기 위한 기능으로, 키값을 이용하여 국가 및 언어에 해당하는 메시지를 읽어오는 기능 제공 Scheduling 어플리케이션 서버 내에서 주기적으로 발생하거나 반복적으로 발생하는 작업을 지원하는 기능으로서, 유닉스의 크론(Cron) 명령어와 유사한 기능을 제공 Server Security 서버 함수 및 데이터 접근 시 보안 관리를 위해 사용자 인증 및 권한 관리 기능을 제공 String Util 문자열 데이터를 다루기 위한 다양한 기능을 제공 XML Manipulation XML을 생성하고, 읽고, 쓰기 위한 기능을 제공

실행환경 오픈소스 현황

표준프레임워크 실행환경의 서비스는 오픈소스 소프트웨어에 기반하여 재활용하거나 확장하여 제공됩니다.

일부 서비스는 선정 기준을 만족하는 오픈소스 소프트웨어가 선정되지 않았으며 자체 구현 하였습니다.

[Spring/eGov] #3 스프링 기본 구조 / Sample 예제 프로젝트 분석 / 원리 / 전자정부프레임워크 / 컨트롤러 Controller / 서비스 Service / @RequestMapping

반응형

https://extsdd.tistory.com/98

자 우리가 저번시간까지 전자정부프레임워크에서 만들어놓은 기본 예제를 실행시켰다. 일단. 이프로젝트가 저번에 실행시켜서 보아하니 간단한 게시판 웹 페이지를 구현해 놓은 것같다.

이제 우리가 웹 서비스를 만들꺼니 당연히 구조를 알아야한다. 하지만 나도 어릴때부터 컴퓨터를 공부했지만, 아무것도 모르는 노베이스 상태에서 컴퓨터 전문가들이 하는 클래스니 객체니, VO니 DAO니 MVC니 이런 개념들 글로만 읽어봤자 아무소용이 없었다. 귀에 하나도 안들어오다가 결국 이해하게된 시점은 내가 직점 해보고 만들어보면서다. 작은 기능단위의 개념을 이해하면서 점차 넓혀 나가는 방식이 프로그래밍을 이해하는데 좋다.

나는 비전공자들도 웹 서비스를 이해할 수 있는 것이 목적이기 때문에 MVC니 이런 큰 개념보다는 당장 눈에 보이는 것들 위주로 설명을 할 예정이다. 나도 처음 프로젝트를 생성했을때 아니 빈 깡통 만들었는데 무슨 파일이 이렇게 많고… 한파일에 수백, 수천줄이 이미 코딩되어있고.. 이 것들이 다 뭘 의미하는지 몰라서 자괴감을 느꼈었다. 하지만 이번부턴 그런거 느낄 시간도 없이 빠르게 진행해보자.

Look! 봐라 일단 좌측 프로젝트 익스플로어 창에 내 프로젝트를 보자. 이미 호기심 많은 분들은 이것저것 디렉토리를 눌러보며 수많은 파일을 보며 한숨을 쉬엇테지만. 저것들 다 나중에 알아도 되는 것들이다. 이미 날고 기는 개발자들이 수많은 고민을 거쳐 만들어 놓은 파일이니. 우리가 뭐 이건 어떻고 저건 어떻고 할 시간조차 필요가 없다. 그분들을 믿고 우린 우리할껄 하자.

자 아무것도 만지지말고 1번 폴더를 눌러서 그 하위 폴더를 다 펼쳐주자. 다만 저 사진에나온 cmm 폴더는 열어볼 필요 없다. 왜냐? cmm이 common 즉 “공통”의 약어이다. 저기 폴더는 우리 프로젝트에서 공통적으로 쓰이는 기능들을 구현해 놓은 이다. 공통 기능..! 자 이름만 들어도 살짝 만들기 어려운게 느껴지지 않나..? 지금 우린 한개기능 만드는것도 힘든데 서비스 전체에서 작동시킬 공통적인 기능들을 집대성한 공통기능..! 맞다. 이것도 위 문단에서 말했다시피 잘하시는 분들이 다 구현해 놓았다 ^-^ 열어보지도 말고 그냥 일단 넘어가자

궁금한 사람들을 위해 간단하게 설명해주자면 프로젝트에 있는 모든 컨트롤러에 전역으로 적용되는 initBind를 정의하거나, 예외상황이 생겼을때 어떻게 할지를 전역으로 설정하거나, 게시판같이 페이지를 넘어가는 기능등 cmm 즉 공통기능답게 서비스 “전체”에 적용되는 부분을 관장한다. 여긴 몰라도 된다. 나중에 코드를 볼 줄 알면 쓱 읽으면 알게 되니까!

자 이제 겁먹지 말라고 3개 문단에 나눠서 말했으니 이제 본격적으로 예제를 분석해보자. 2번 박스에 있는 EgovSampleController.java를 보자!

Camel 표기법

자 일단 대소문자가 섞여잇는데 대문자가 나올때마다 띄어쓰기라고 생각하면 된다. Egov Sample Controller.java 라고 생각하면된다. 파일명이나 변수명에 띄어쓰기가 안되는데, 그냥 소문자로만 이어쓰면 Egovsamplecontroller.java 로..사실 단어 단위로 구분해낼 수가없어 암호문이 되버린다. 그래서 띄어쓰기를 표현하기위해 띄어쓰기마다 첫글자를 대문자로 작성한다. 이 표기법을 낙타 등에 혹처럼 들어갔다 나왔다 반복한다해서 Camel 표기법이라도 한다.

EgovSampleController.java

자 일단 읽어보자. Egov는 이거 전자정부프레임워크의 앞글자를 딴거고 Sample은 우리가 만든 샘플 예제정도 되는거 같고. Controller..! 대박 Cmm 패키지 폴더에는 어려운 글자들만 보이다가 여기와보니 컨트롤러라는 아는 단어가 있다! 살짝 자신감이 생긴다. 컨트롤러..? 뭔가 조작을 하는가보네..?

속한 패키지 디렉토리 이름부터 봐라. web이다.. 맞다 여기가 제일 중심이다. 뭔가 처리해주고 판단해주고 두뇌같은 역할을 한다. 이 간단한 프로젝트에 사용자들이 요청하는 기능들에 대해서 어떻게 수행하면 되는지가 요기 정의된다.

앞으로 사용자가 요청이 들어왔을때 그 요청을 어떻게 처리하라!! 라고 정의하는 곳을 Controller라고 부를 것이다. 여기서 Controller에대한 개념을 조금 알고 가길 바란다.

컨트롤러(Controller)란 무엇인가.

컨트롤러는 하나만 있는건 아니고 큰 기능 단위로 있다. 우린 예제 프로젝트라 걍 뭐..걍 컨트롤러라고 부르기 간지가 안나니까 Sample이라고 이름이라도 붙혀서 뭔가.. 아..컴퓨터는 Sample이란 단어 잘 안쓰는데 ㅎㅎ… 이거 사람이 만든거구나.. 인간적인 냄새라도 나라고해서 EgovSampleController지만 실제 스프링 프로젝트들을 보면 위와 같이 킨 기능 단위로 컨트롤러를 만든다.

예약 조회, 삽입, 삭제, 수정 등 예약에 관한 모든것은 예약 Controller가 관리하고 그 파일에 다 명시를 하는거다. (물론 한글명으로 Controller를 만들지는 않고 뭐 RsmController.java 정도로 만든다). 또 고객에 대한 모든 기능은 고객 Controller에 담아둔다. 자이제 Controller에 대한 개념은 잡혔을 것이다. 말 그대로 기능이 어떻게 작동할지 조작을 제어하는 곳 정도로 생각하면 된다.

그럼 service에 있는 애들은 머야 ㅡㅡ 서비스..? 뭔가 코딩이 아니어도 현실세계에서 서비스라고 하면 뭔가 보이지 않는 무엇을 해주는..? 이정도로 알고있을텐데 맞다 . 여기 서비스에 있는 파일들은 저기 web 패키지에 Controller가 일 할 수 있도록 도와주는 쩌리들이 모여있다. 많이 드러나지는 않아서 활약이 크게는 안느껴지는 친구들이다. 바로 서비스부터 들어가면 어려우니까 Controller의 코드부터 분석해보자!

1. 자 package 머시기라고 써져있다. 여기 볼꺼없다. 그냥 이 파일이 속해있는 패키디 디렉토리 경로라고 보면 된다. 우측 패키지 익스플로어를 보면 저 경로에 파일이 위치해 있는 것을 알 수 있다. 민증 깠을때 내 집주소가 찍혀있듯이, 저 맨위에 이파일의 주속다 찍혀있는 것이다. 그렇다. package는 코딩계의 민증이라고 보면 된다. 자. 첫 번째줄은 큰 어려움 없이 통과했다. 히힣..

2. import라고 써져있다. 와우! 짧다.! 하지만 좌측 +버튼을 눌러보자. 와우. x 됐다. import는 컴퓨터 좀 깔짝거리면서 프로그램 몇개 만져보면 많이 봐왔어서 익숙한데.. 밑에보니 무슨 Pagination, fdl, prt, VO..갑자기 어려운게 생겨버렸다.

겁먹을거 없다. 처음부터 차근차근 이해해보자. 자 우리가 제일 자신있는 단어 import!! 맞다. 뭔가 넣어주는 거다 우리의 이 컨트롤러에(EgovSampleController.java). 근데 뭘 넣냐구..? 기능에 필요한 파일들을 넣어주는 것이다. 다시 또 묻는다. 아니 그니깐..! 뭘..! 왜 넣냐구! 한다면.. 뭐 더이상 할말이 없다.. 왜냐면.. 진짜 기능에 필요한걸 넣어주는거니까.. 하지만 나는 raw한 표현을 잘 하니 노베이스 기준으로 또 설명을 해보겠다.

자.. 우리가 기능을 만들면서 숫자를 반올림하고 반내림 하는 기능이 필요하다고 가정해보자. 자 1.9를 반올림 하라하면 어떻게 할 것인가. 우린 인간이니까 그냥 딱 바로 2잖아! 하지만 컴퓨터는 그런걸 모른다. 어떻게 구현할 것인가. 반올림을 하는 인간의 사고를 그대로 컴퓨터가 이해할 수 있도록 시간을 들여 번역을 할 것인가..? 아니다. 그럴 필요가 없다.

애초에 첫 포스팅부터 썻던 프레임워크가 뭔지 이해햐면된다. 우리가 프로젝트를 쉽고 빠르게 만들 수 있게 만드는 툴! 맞다. 우리가 원하는 고차원적인 예를들어 고객을 조회해 포인트를 차감하는 이런 구체적인 기능단위는 대부분의 사람들의 프로젝트에는 사용하지 않는기능이지만, 저 반올림이라는 아주 원초적인 기능은 대부분의 프로젝트에서 요구되는 기능일 것이다. 아주 기초적인 것이니까. 프레임워크란 이런 기초적인 기능들을 모아놓고 빠르게 조합해서 쓰라는 것이다.

즉, 저렇게 많이쓰는 함수들은 이미 이 전자정부프레임워크라는 작업대에 다 포함되어 있는 것이고. 저 import 뒤에 나오는 경로는 그 경로에 있는 파일에 있는 기능들을 여기서도 사용하겠다!의 이미라고 보면된다.

이미 import된 친구들은 이 서비스를 돌리기위해 이미 추가되어있는 것이니 손댈꺼 없다. 아~ 그냥 이 컨트롤러를 돌리는데 이런친구들을 활용하는구나~ 생각하면 된다. 다음으로 넘어가자

주석

와우 씌엣..! x 됐다..! 코딩도 아닌 그냥 평문이 써져있잖아..! 20세기 코딩법인가..? 아니면 22세기 코딩법인가..? 아니다 놀라지 않아도 된다. 저건 주석이라고 한다. 뭐냐면 코드 중간중간 이코드가 무엇인지 써놓는 낙서장 같은 역할이다. 사용하는법은 이렇다 코드에 // 을 붙이면 그 뒷줄은 컴퓨터가 인식하지 못한다. 하지만 100줄을 주석처리할려면 //을 100번을 쳐야할까..? 아니다 그 그 100줄을 앞뒤로 /** 내용 ㅎㅎ **/로 감싸면 그 사이를 모두 인식 못하게 된다.

저 주석을보면 저 코드가 2009년에 수정되었나보다… 아니 2019년 오타아냐?ㅡㅡ 할 수 있지만.. 2009년이면 양호한거다.. 어떤코드를 보면 2003년 주석도있고.. 그 당시 개발자의 욕..애환들도 써져있기도 하다.. 아..이거 왜 안돼.. 집에 언제가.. . 이런게 써져있는걸 처음 봤을때 잘못본줄 알았던게 생각난다..ㅋㅋ 마치 디지털 동굴 벽화를 본 느낌.. 저 주석은 읽고 이해되면 그런가보다하고 이해못하면 걍 넘어가자 ㅎㅎ

1. 자 @가 붙어있다. Annotaion(어노테이션)이라고 하는데 앞으로 이 골뱅이의 의미는 “얜! 이런 성격을 가지고 있어!”라고 알려주는 거다. 즉, 이 데이터가 어떤 데이터인지 설명해주는 데이터라고 보면된다. @뒤에 Controller라고 써져 있으니. 미 밑줄 public class EgovSampleController 라는 친구는 “Controller”라는 친구야!! 라고 설명을 해주는 것이다. 이건 컴퓨터가 소스코드를 읽어올때 먼저 어노테이션부터 읽어놓고 이놈에 필요한 정보들을 미리 준비한다. 그럼 또 Controller라고? 그게 먼데? 라고 또 묻는다면 위를 다시 읽어보면 된다. 내가 계속 말한 컨트롤러에 대한 설명을 저 @Controller 라는 한줄로 컴퓨터는 아하!!! 하고 알아듣는다.

2. public class EgovSampleController 이부분을 보자. 이건 java에대한 기본 지식이 있으면 저 public calss의 의미는 알것이고 비전공자분들은 저거 크게 신경 안써도 된다. 학교에서 시험볼때나 저거만지지 스프링 프로젝트 하다보면 거의 만지는일은 없다.. EgovSampleController는 이 컨트롤러의 이름이다. 이건 좌측 패키지 익스플로어에 나오는 파일명과 일치해야한다. 자 2번까지도 별거 없다. 3번으로 가자

3. 자 이제 좀 코드다운게 나왔다. 쫄지말자 일단 첫줄 /** EgovSampleService **/ 이건 위에 말했다시피 주석이다. 밑에있는 내용이 EgovSampleService라는 친구에요 ^-^하고 알려주는 것이다. 자그럼 두번째줄 @Resource(name = “sampleService”) 어..! 이거 살짝은 알아 들을 수 있을꺼 같은데..!? 그렇다 @Resource가 붙어있으니 아래 나오는 private EgovSampleService는 Resource라는 형태로 되어있는놈이다!! 이렇게 해석하면된다. 저기 name = “sampleSerivce”라고 되어있는데 짐작이 가지 않는가..? 맞다 그 Resource의 이름은 sampleService라는 놈이고 그놈이랑 연결을 시킨다라는 의미다.

좀 더 나아가자면 웹 서비스가 처음 구동될때 생성된 POJO라고 불리는 함수나 상속, 구현이 없이 순수히 데이터만 가진 객체를 생성하는데 물론 그 데이터마다 name이 있다. 그 당시 만들어진것을 지금 저 Controller가 지금 매칭을 시키는 것이다. 시작하면서 만들었던 그 객체!! 우리가 지금 써야해!! 하고 Resource 어노테이션을 이용해서 연결시키는 것이다.

다음줄을 보면 private EgovSampleService sampleService라고 되어있다. 자 이건 자료의 형이 EgovSampleService이면서 여기서 사용할 이름은 sampleService라고 선언하는 것이다. 물론 이 객체는 위에 Resource 어노테이션을 이용해 연결된 smapleService라는 객체의 데이터를 받았다고 생각하면 된다.

서비스(Service)란 무엇인가

자.. 위에서 본 3번 박스.. 요약하자면 지금 sample이란 이름의 service를 데리고 온거나! 컨트롤러에! 그게 뭐냐면 앞으로 컨트롤러 내부에서 sample에서 정의된 모든 기능들을 쓸 수 있다는 얘기!! 자.. 여기서 뭔 소린가 멘탈나간 사람들을 위해서 그림으로 정리해봤다.

자 .. 이상하긴 하겠지만 군대에 이걸 대입해보자. 자 컨트롤러란 공통된 기능들의 집합인데 이걸 군대로 치면 통신부대, 전차부대, 포병부대, 공병부대 이렇게 각 역할들로 묶인 집단으로 생각할 수 있다. 사용자들이 웹 페이지에 요청을 어떻게 처리할지 Controller에 정의하듯이, 통신부대도 상급부대에서 명령이 내려오면 어떻게 할지는 통신부대 내부에서 처리한다.

자! 다시 부대얘기로 돌아와서 사령부에서 “지금 A~B구간의 통신망 개통이 가능하니?” 라는 요청을 한다면 이 통신부대에서는 요청을 처리해야할 것 아닌가? 그럼 요청은 어떻게 처리할까? 그냥 부대원들 모여서 야 ㅎㅎ 개통 가능할까..? ㅎㅎ 투표할까..? 아님 발표하고싶은사람있어..? ㅎㅎ 이렇게 오합지졸로 결론을 도출할까? 아니다.

그 통신부대에는 운용과장이 전술,전략에대해 판단하고, 군수과장은 출동에 가용한 차량은 몇대나 되는지, 식수는 몇명인지 등 각 역할별로 본인들의 “기능”들이 있을 것이다.

더 세부적으로 들어가면 운용과장은 1. 지형을 판단하여 통신망 개통이 가능한지의 판단. 2. 적의 예상 침투로를 판단, 3. 지형과 기상을 판단 등 여러가지 판단을 내릴 수 있고 이건 인사과장이나 군수과장의 임무가 아니고 운용과장만이 주로 해야하는 일종의 기능들인 것이다.

이제 좀 감이 잡혔는지 모르겠다. 즉 서비스라는 것은 특정 기능들을 하기위해 필요한 객체들을 불러와 놓은것이다. 서비스 이름이 SampleService라고 해놔서 샘플 기능을해..? ㅡㅡ 라고 좀 이해가 안된다 생각할 수도 있지만.. 머 마땅히 붙힐 이름이 없어서 저렇게 붙혔을 것이다.. 샘플 프로젝트라 머..아무 기능이 없는데 뭔서비스라고 지어 ㅡㅡ 라고 생각해서 아마 그냥 프로젝트의 이름을 따와서 SampleService라고 지어놨을 것이다.

자 그럼 어떤 서비스들을 꺼내놨는지 보자.

1. sampleService란다. 이건 우리가 예제로 만들어져 있는 서비스다. 그 상세 기능은 저 파일안에 정의되어 이씅며 저 서비스가 하는내용으론 게시판의 글을 조회하고, 수정하고, 목록을 가져오는 아주 범생이같은 일을 처리해주는 서비스다.

2. propertiesService는 파일에 찾아봐도 없을 것이다. 바로 이건 살짝 깊숙한 곳에서 불러왔기 때문이다. 여기에대해서 설명하면 좋은데 그럼 또 너무 길어진다. 우린 쓸일이 없으니, 분량을 위해 더이상 알아보지말고 어떤 놈인지만 알고 넘어가자. 바로 페이지의 크기가 정의되어 있다.

context-properties.xml에 정의되어 있는데 아니..!갑자기 잘나가다 왜 갑자기 이딴게 튀어나와!!! 할 수 있지만. 일단 넘어가자. 설명하면 좀 길다. 일단 이 서비스는 게시판 목록에대한 정보를 가져오는 서비스라고 생각하자.

3. 자 얘도 더욱이 알필요 없다. 말그대로 Validator 즉, 유효성을 검증해주는 친구인데 말만들어도 재미없다..그냥 시스템을 탄탄하게 해주는 놈이라고 생각하고 넘어가자.

URL Request Mapping

자 이제 쭈르륵 내려보면 저 뭉텅이의 꼴들이 계속 나올텐데 이게 가장 중요하다 사실 위에 말했던거 이해하면 좋은거고 이해못해도 상관없다. 어차피 저거다 복붙해서 이름만 바꾸고 크게 중요하지 않다 초보자 입장에서는..

이제 알아볼 것은 이제 진짜 요청을 어떻게 처리시킬지를 정의해두고 있다. 주석을 보면 함수가 어떤기능을 하는지를 정의해놨다 긍 목록을 조회하는 함수라고 한다.

1. 자 어노테이션에 RequestMapping이 붙었다. 제일 중요한 녀석이다. 사용자가 글목록을 조회할때 http://localhost:8080/egovSampleList.do 라는 URL이 요청될텐데 웹 서비스는 저 egovSampleList.do 라는 요청을 누가 처리하는지 찾아낸다. 근데 모든 함수를 전수조사하면 답이 없으니 저 RequestMapping이라는 어노테이션이 붙은 친구들중에서만 찾아낸다. 만약 저걸 처리해주는 함수를 만나면 실행시키는 것이다!

2. 그래서 함수의 이름도 요청의 이름과 동일하다

3. 글을 어떻게 불러오고 어떻게 처리할지 구체적인 비지니스적인 로직이 여기 작성된다. 일단 우린 큰틀부터 잡을 것이기 때문에 여기에 그런 것들이 적힌다는 것만 알고 넘어가자

4. “sample/egovSampleList”를 반환헀다. 결국 3번에서 처리한 결과를 반환한것이다. 이제 그 결과가 사용자가 보는 화면단에 나타날 것이다.

여기까지 알아본게 바로 뒷단 로직인것이다. 전체적으로 한번 보자. 컨트롤러는 함수이름으로 보지말고 RequestMapping 값이 어떤 URL인지 보는게 더 편하다. 사용자도 저 주소를 치고 들어가니까말이다. 아 그리고 요청 URL의 끝은 .do를 쓰는데 그냥 그런가보다 해라. do someting!! 뭔가를 수행해라!!의 의미로써 우리가 아는 do의 의미랑 같다. 이렇게 붙인 이유는 다른 Servlet과 충돌을 막기위해 아무거나 바꾸긴 해야하는데… 그냥 적당한걸로 바꿨다고…

자 정리해보자. 우리의 기본 컨트롤러인 EgovSampleController는 게시글 관련기능, 페이지 목록, 유효성을 검증해주는 3개의 서비스를 호출해놨고 이 컨트롤러에서는 글 조회, 등록화면 조회, 글 수정화면 조회, 글 수정, 삭제 등 5가지의 기능을 수행하는 컨트롤러다!

만약 사용자가 http://localhost:8080/ + 저 기능에대한 주소 를 요청하면 이 컨트롤러가 위에 정해진 로직대로 기능을 수행할 수 있다. 오늘은 여기까지 뒷단 로직의 일부를 알아보았다.

자 정리하면 딱 이거다.

1. 사용자는 크롬이던 익스플로러든 웹 화면을 보고 글을 쓰기위해 “등록” 버튼을 누른다

2. 등록 버튼이 눌리면 등록 화면을 호출해주는 URL을 호출한다.

3. 그 URL은 addSample.do 이다.

4. 스프링 서비스에서는 Servlet이란놈이 저 addSample.do요청이 들어오면 누가처리해!!!!!!!!소리를 지르다 RequestMapping 어노테이션을 뒤져보니 EgovSampleController가 해준다는 것을 알아낸다.

5. 찾아냈으니 그 요청에대한 비지니스 로직을 실행한다

6. 결과로 sample/egovSampleRegister.jsp를 반환했다. 그럼 사용자한테 이 화면을 보여주면 되는거다!

7. WAS가 5번에서 넘어온 정보들을 sample/egovSampleRegister.jsp에 뿌려 조립을해서 그 결과를 사용자에게 보여준다!!!!!!!!!!!

하!!!!!!!!! 이거 포스팅 작성하는데 한 4시간 걸린 것같다…일단 큰 개념을 잡았으니, 다음시간에..간단한 요청처리를 하나 만들어보자..ㅠㅠ 힘드러

#스프링 #Spring #전자정부프레임워크 #기본구조 #샘플예제 #예제 #프로젝트 #분석 #원리 #컨트롤러 #Controller #서비스 #Service

반응형

전자정부프레임워크 기본 구조(라고 내가 생각하는 부분)

전자정부프레임워크 기본 구조(라고 내가 생각하는 부분)

전자정부프레임워크로 처음 개발을 할 때. 그러니까 날코딩이나 클래스정도 겨우 사용을 할 때, 혹은 php 를 하다가 처음 하게 되었을 때

적응하는데 처음으로 알아야 할 것들을 정리해본다.

계속해서 수정을 이뤄질 것으로 보인다.

하나의 게시판을 bbs라고 정의를 하고 생각을 해보자

자바 구조

bbs

— service

Bbs.java

BbsVO.java

BbsService.java

–impl

BbsServiceImpl.java

BbsDAO.java

— web

BbsController.java

ibatis(mybatis) 구조

sqlmap

–config

bbsConfig.xml

–bbs

bbsDAO.xml

jsp 위치

WEB-INF/jsp/의 적당한 곳

로 생각을 하고 있다. 실제 게시판의 경우 (이것저것 삭제를 하고 보면) 아래와 같은 패턴으로 되어 있다.

당연 이 패턴만이 정답은 아니다.

기본 구조를 이렇게 정해놓고 상황에 따라서 확장 및 변경을 하는 것이 좋아보인다.

처음 이 구조가 익숙치 않아서. 그럴 때 작업한 것들은 지금 봐도 소스 구조가 좀 이상한 것들이 존재한다.

1. bbs.java와 bbsVO.java 는 VO로 정의될 수 있을 것 같다.

위의 그림을 기준으로 보면

Board.java : 게시물에 대한 데이터 처리 모델

BoardVO.java : 게시물 관리를 위한 VO 클래스

로 주석을 볼 수 있다.

Board.java 는 DB 테이블의 컬럼하고 매칭이 된다고 볼 수 있고(이렇게 보면 DTO라고 불러도 될 거 같은데)

BoardVO.java 는 Board.java 를 확장해서 검색, 페이징정보, 정렬순서등의 정보가 들어 있다.

DTO : Data Transfer Object

VO : Value Object

둘의 차이를 정확히는 모르겠는데 둘은 일단 비슷한 개념이라고 하는 것 같다.

데이타를 담아서 전달하는 역할을 하는 것이라고 생각하고 있어도 될 것 같다.

VO는 setter 와 getter로만 되어 있는 data object 이다. 로직이 없이 데이타를 담아서 가지고 다닌다.

VO를 씀으로서 VO자체의 코드를 작성하는 것이 꽤 귀찮다. VO가 긴경우, VO의 setter, getter 에 선언된 method명이 복잡한 경우에는 정말이지 좀 그렇다. 개인적으로는 가급적 VO를 직접 작성할려고 한다. 전자정부프레임워크에 익숙해지기 위해서 직접 작성하기도 했지만 직접 작성하는 것이 웬지 더 좋은 것 같다. 물론 TEXT Editor열어놓고 카피해서 쓰지만.

2. service 의 역할 및 구성

Service 는 Interface

실제 내용은 impl 아래 ServiceImpl에서 구현을 한다.

3. DAO 의 정의 및 역할

DAO

Data Access Object

.

.

.

4. Controller는 ?

Controller 에 대한 설명은 아래 url을 참조하는 것이 더 좋은 것 같다.

전자정부프레임워크 Controller 를 하나 열어놓고 아래와 같이 보면 좀 쉽지 않을까.

습관적으로 쓰는 것만 쓰다보니 아래와 같은 URL한번 보면 도움이 되는 것 같다.

http://www.egovframe.org/wiki/doku.php?id=egovframework:rte:ptl:annotation-based_controller

[전자정부 프레임워크] eGovframework 웹 어플리케이션 개발_02 전자정부 프레임워크 구조 아키텍처 및 사용했다는 기준???!!

반응형

오늘은 전자정부 프레임워크의 구조 아키텍처와

전자정부 프레임워크를 사용했다는 기준에 대하여 알아보려고 합니다.

막상 전자정부 프레임워크로 개발을 진행하려 보니 어??! 전자정부 프레임워크를 사용했다는 기준이 뭔데??

라는 고민이 빠지게 되었습니다. 해서

인터넷 여기저기 발품 팔며 알아본 결과

전자정부 프레임워크를 사용했다는 기준은 아래와 같다

먼저 전자정부 프레임워크의 개발 아키텍처는 아래 사진과 같습니다.

eGovframework의 아키텍처는 크게 3개의 layer로 구성되어있다.

1. Presentation Layer – Controller 단

2. Business Layer – Service 단

3. Data Access Layer – Dao or Mapper 단

각 클래스별 전자정부 표준 프레임워크 아키텍처 적용 규칙은

우선 Annotation 기반 Spring MVC를 준수해야 한다.

Controller class

Class 상단에 @Controller annotation 선언해야 함.

ServiceImpl class

Class 상단에 @Service annotation 선언 또한 AbstractServiceImpl 또는 EgovAbstractServiceImpl을 상속해야 하고 업무에 대한 특정 Service 인터페이스를 구현해야 한다.

DAO/Mapper class

DAO Class의 경우 @Repository annotation 선언 Mybatis Mapper Interface 방식을 이용하는 경우에는 @Mapper annotation을 선언해야 한다. 또한 EgovAbstractDAO(ibatis) 또는 EgocAbstractMapper(Mybatis)를 상속해야 한다.

둘째로 데이터 처리 부분은 iBatis 또는 MyBatis를 활용해야한다.

iBatis 사용시 SqlMapClientDaoSupport를 상속한 EgovAbstractDAO 활용해야하며

MyBatis 사용시 SqlSessionDaoSupport를 상속한 EgovAbstractMapper 활용해야한다.

※ MyBatis의 경우 Mapper interface 방식으로 사용 가능(권장) 하며, 이 경우는 interface 상에 @Mapper를 지정하여 사용되어야 한다.

셋 째로 운영서버(Was)의 웹어플리케이션 루트 디렉토리/WEB-INF/lib/ 폴더에 egovframework.rte로 시작하는 .jar 파일이 존재해야 하며 실제 소스코드에서 위의 .jar파일이 활용되고 있어야 한다. 예(import egovframework.rte)

마지막으로 활용 및 확장 규칙

표준프레임워크 실행환경 준수 : 표준프레임워크 실행환경은 적극적으로 활용되어야 함 (실행환경 부분 임의 변경 금지)

확장 규칙 : 업무 클래스는 egovframework.rte 패키지 내에 정의될 수 없음

이외에 개발 환경, 운영환경 및 공통 컴포넌트 부분은 선택적으로 적용 가능하며, 임의 변경 및 확장 가능함

UI 부분에 RIA(Rich Internet Appliation)가 적용되는 경우는 UI Adaptor 또는 RESTful 방식을 적용 활용해야 함

라고 합니다.

반응형

전자정부프레임워크 3일차 – 프레임워크 구조 분석(반복)

오늘은 점심에 교육이 있어 오전에 분석좀 하다가 교육듣고 정리해야겠다.

[Spring/eGov ] #8 이클립스에서 마리아DB 데이터 조회하기 / MyBatis / 컨트롤러 Controller / 서비스 / DAO / 원리 / 구조 / Sql.xml :: 외장하드 (tistory.com)

위의 블로거님의 글을 보며 정리한 내용입니다.

Controller : Biz(비즈니스적 로직)를 처리하는 것,,

Biz란 컴퓨터의 삽입, 삭제등의 연산을 이용해 사람이 필요한 기능을 구현하는 것 ,,

Service : 컨트롤러단에서 DB의 데이터를 가져오기위해 사용하는 것 > 집합체라고 표현함

Controller 캡쳐

1. 컨트롤러단에서 EgovSampleService라는 인터페이스 형태로 sampleService라는 객체를 호출해서 서비스를 선언하고,

2. 데이터를 sampleService 인터페이스 내의 selectSampleList라는 메서드에 searchVO라는 파라미터를 담아 호출

3. sampleService내의 selectSampleList는 sampleServiceImpl이라는 구현부를 호출해서 로직을 처리

4. DAO로 넘김

3. searchVO가 데이터를 가져와서 sampleList에 넣음

4. model.addAttribute를 통해 sampleList의 데이터가 resultList라는 이름으로 모델에 저장됨

ServiceImple 캡쳐

Service 구현부를 보면 나는 db가 Ibatis로 연동되어있기 때문에

@Resource 태그의 name타입으로 sampleDAO.java파일이랑 연결된것을 확인 할 수 있다.

private 선언으로 SampleDAO 클래스를 sampleDAO라는 객체로 선언했고

선언한 sampleDAO 객체에 VO를 받아온다.

sampleDAO.java 파일과 EgovAbstractDAO.java 파일

sampleDAO파일을 보면 EgovAbstractDAO를 상속하는데,

그 파일을 들어가보니 주석의 설명과 같이 개발된 함수를 통해 SQL을 통해 처리되는것을 확인 할 수있다.

DAO를 통해 DB에 접속하여 DAO에 데이터를 담아오고

DAO의 데이터를 다시 VO에 담아 ServiceImpl > Service > SampleList > resultList 순으로 넘어오는것을 확인 할 수 있다.

오전 복습 끝

키워드에 대한 정보 전자 정부 프레임 워크 구조

다음은 Bing에서 전자 정부 프레임 워크 구조 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 3.웹개발 코스 [스프링 프레임워크 + 전자정부 프레임워크]

  • 코딩
  • 프로그래밍
  • 개발
  • 개발자
  • 프로그래머
  • 자바
  • C언어
  • 안드로이드
  • 스프링프레임워크
  • C#
  • 데이터베이스
  • DB
  • LINUX
  • 인강
  • 인터넷강의

3.웹개발 #코스 #[스프링 #프레임워크 #+ #전자정부 #프레임워크]


YouTube에서 전자 정부 프레임 워크 구조 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 3.웹개발 코스 [스프링 프레임워크 + 전자정부 프레임워크] | 전자 정부 프레임 워크 구조, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

Leave a Comment