전자정부 프레임워크 4.1.0이 12월 12일 릴리즈 되었습니다.
https://www.egovframe.go.kr/home/sub.do?menuNo=94
베타버전으로 나온거긴한데...
기능 구성이 너무 방대해서 보는 데 몇일 걸릴거 같습니다.
적당히 xml을 읽어서 객체를 생성하여 주는, 그래도 그나마 나름 Spring Boot 같은 프로젝트를 만드시려면 아래 사진처럼 Boot Template Project를 선택하셔야 합니다.
나머지 부트 프로젝트 만들기는 모양은 스프링 부트인데 xml읽어서 환경구성하는 방식으로 되어 있습니다.
전자정부 4.1.0은 2가지 프로젝트가 만나야 동작하는 모습을 볼 수 있습니다.
데이터베이스 연동 및 데이터 CRUD 역할을 하는 스프링부트 프로젝트 1개, 브라우저에서 동작하는 리엑트 프로젝트 1개로 구성되어 있습니다.
#1. 전자정부 프레임워크(백그라운드)
해당 템플릿을 선택해서 프로젝트를 만들면 뷰는 존재하지 않는 오직 백그라운드 기능의 서버를 확인할 수 있습니다.
화면은 없지요~
왜냐하면 화면은 리엑트로 구현되어 있기 때문 입니다.
화면을 같이 띄우시려면 아래에서 리엑트 프로젝트를 받아야 합니다.
https://github.com/eGovFramework/egovframe-template-simple-react
리엑트는 웹팩이 돌려주고, 전자정부프레임워크는 내장형 톰캣이 돌려주므로 서로 통신이 안되는 문제가 발생합니다.
그래서 테스트를 하려면 EgovConfigWebDispatcherServlet 클래스에서 아래 교차출처를 풀어줘야 합니다.
리엑트에서 프록시 설정을 하지 않은 것은 좀 많이 아쉽습니다.
그래서 편하게 개발하려면 주석을 푸는 것 보다도 리엑트 프로젝트에서 프록시 설정을 해 주는 것이 좋을 거 같습니다.
아무튼..스프링 부트 프로젝트는 규모가 제법 커서 (자바 파일122개) doc 라는 디렉토리에 md파일이 존재하여 기능설명을 하고 있습니다.
클래스마다 코멘트가 잘 작성되어 있지 않아서 사실 무언가라도 봐야 이해하기 쉽기 때문 입니다.
아래는 md파일의 모습입니다.
뭐..설명이 그렇게 자세...하..게는...음...
저는 md파일 안보고 그냥 분석하기로 마음을 먹었습니다.
config 패키지의 클래스들은 xml을 읽어서 기능을 만드는 구조로 되어 있습니다.
그러므로 무턱대고 xml파일 지워버리시면 프로젝트가 동작하지 않습니다.
#2. 리엑트(프론트)
리엑트는 깃헙페이지에서 클론해서 동작시킬 수 있습니다.
https://github.com/eGovFramework/egovframe-template-simple-react
리엑트로 구현된 프론트기능에서는 특정 기능에 Jquery가 사용되고 있습니다.
조금 아쉬운 방법이긴 하나...리엑트로 해당 기능 구현을 못했나 봅니다.
* 누가...리엑트로된 라이브러리가 없어요~ 라고 그랬나 봅니다......
리액트 내부는 나름 후크(Hooks) 구조로 개발되어 있으며, 상태관리는 오직 react 패키지의 useState 또는 useEffect 같은 함수만 사용되고 있습니다.
모빅스나 레덕스는 사용되지 않으므로 나름 개발자가 확장하기 쉽도록 고려를 해줬다고 추측하여 봅니다...
라우팅 하는 곳의 코드가 100여줄 이상으로 되어 보이므로 해당 컴포넌트를 각각 찾아가 봐야 하겠습니다.
다시한번 정리하면, 4.1.0 버전의 전자정부 프레임워크를 사용하여 화면을 띄우시려면 두개의 프로젝트인 스프링부트와 리엑트를 띄워야 합니다.
스프링부트는 DB접속, 로그인(JW Token) 및 각종 데이터에 대한 CRUD 기능을 제공하고,
화면은 리엑트로 되어있어 사용자가 직접 관리 할 수 있게 해 줍니다.
반가운 점으로는..
기존 4.0.0버전에서 보였던 아쉬운 스프링부트의 XML 위주 구조가 나름 이번에는 부트프로젝트에 가까운 모습을 볼 수 있었다는 점 입니다.
또한 백그라운드, 프론트엔드를 나누었다는 점도 매우 좋았던 것 같습니다.
아쉬운점으로는
백그라운드 역할을 담당하는 부트 프로젝트에서의 자세한 개발이력 및 클래스 및 메서드에 대한 코멘가 많지 않아서 분석하는 데 시간이 매우 오래걸릴 것 같습니다.
마찬가지로 프론트를 담당하는 기능을 전자정부 리엑트로 명시를 해버려서..
해당 기능에 대해서 자세한 설명이나 소개가 되어있어야 하는데 마찬가지로 그러한 점을 찾을 수 없다는 것 입니다.
솔직히 기능 구현에 치우쳐 다른 개발자가 과연 해당 코드와 아주 간단한 수준의 이력만 보고 어떠한 기능인지 분석하고 이해하는데 정말 많은 시간을 할애해야 될 거 같습니다.
개발 프레임워크의 표준화를 원한다면,
장황한 기능을 개발하여 사용자에게 배포하는 것 보다도 개발자가 사용하기 쉽고 이해하기 쉬운 구조 + 이력 + 설명이 있었다면 좋았을 거 같습니다.
스프링부트 프로젝트의 표준화가 될지 걱정이 됩니다..ㅠ
이상으로, 전자정부 4.1.0에서의 프로젝트를 동작하는 방법에 대해서 간단하게 써 보았습니다.
* 전자정부프레임워크 4.0.0 후기
https://lts0606.tistory.com/626
'Spring framework' 카테고리의 다른 글
MongoDb Maven build 오류(JSONObject, JSONArray) (0) | 2023.02.02 |
---|---|
[JAVA, JAVASCRIPT] 파일 다운로드 한글깨짐 (0) | 2023.01.09 |
Mybatis 에서 트랜젝션(commit, rollback) 수동 사용하기(SqlSessionFactory, TransactionFactory) (0) | 2022.12.12 |
[Spring] could not install class webappstructureserializer (3) | 2022.12.01 |
전자정부프레임워크 4.0.0 사용 후기 (8) | 2022.08.26 |
댓글