반응형

image.png

안녕하세요. 가야태자 @talkit 입니다.

pom.xml 설정을 잘 하셨나요?

혹시 중간에 안되는 것 있으면 댓글 주시면 도와 드리겠습니다.

그런데 저도 오늘은 실패 했습니다. ^^

다음 글에서 정상적인 연결을 작성 하겠지만, T.T

오늘은 왜 실패했는지를 기록으로 남겨 두려고 합니다. 저처럼 헤매시는 분이 계실 것 같아서요.


먼저 결론부터

  • 하려던 것 — 앞서 만든 Spring MVC 샘플 프로젝트에 전자정부 프레임워크 공통 컴포넌트를 얹기
  • 막힌 곳 — 컴파일하고 톰캣을 올리는 단계
  • 원인 추정 — 기본 Spring 예제 샘플과 전자정부 프레임워크가 충돌
  • 결정 — 프로젝트를 완전히 지우고 빈 프로젝트로 다시 시작

이 글은 실패 기록입니다. 성공한 방법은 다음 글(012)부터 이어집니다.


1. pom.xml 수정

MySQL 연결을 위해 의존성을 추가했습니다. 여기까지는 문제가 없었습니다.

2. globals.properties 파일 검색

전자정부 프레임워크는 DB 접속 정보 같은 설정을 globals.properties에서 읽어 갑니다.

그래서 이 파일을 찾았는데,

T.T 이 파일이 없었습니다.

생각해 보면 당연했습니다. 제가 만든 건 일반 Spring MVC 샘플 프로젝트였고, globals.properties는 전자정부 프레임워크 쪽 파일이니까요.

3. 공통 컴포넌트 설치

그래서 로그인 기능 등의 공통 컴포넌트를 설치했습니다. 설치하니 globals.properties가 만들어졌습니다.

여기서 "아, 되는구나" 싶었습니다.

4. 관련 DDL 파일 수행

공통 컴포넌트가 쓰는 테이블들을 생성했습니다.

5. 컴파일 및 톰캣 시작

여기서 실패했습니다. T.T

6. 오류 상황 분석

여러 가지 오류를 분석해 봤는데, 기본 Spring 예제인 샘플과 전자정부 프레임워크가 충돌이 나는 것 같았습니다.

7. 새로운 프로젝트 생성

그래서 완전히 지우고 빈 프로젝트를 생성했습니다.

한참 만든 걸 지우려니 아깝긴 했는데, 계속 붙들고 있는 것보다 나았습니다 ^^;;


돌아보면 — 왜 안 됐을까

시간이 지나 정리하면서 생각해 보니, 이건 설정을 하나 빠뜨린 문제가 아니었습니다.

제가 착각했던 게 하나 있습니다.

전자정부 프레임워크 공통 컴포넌트를 "라이브러리"라고 생각했던 것

Spring Boot에서 starter 하나 추가하듯이, 기존 프로젝트에 얹으면 되는 줄 알았습니다.

그런데 공통 컴포넌트는 라이브러리가 아니라 이미 완성된 애플리케이션의 일부입니다. 그래서 이런 것들을 전제하고 만들어져 있습니다.

  • 패키지 구조 — egovframework.com.* 아래에 있을 것
  • 설정 파일 배치 — globals.properties, context-*.xml 이 정해진 자리에 있을 것
  • web.xml 구성 — 필터와 리스너가 전자정부 방식으로 잡혀 있을 것
  • 의존성 버전 — Spring, MyBatis 등이 그 버전에 맞을 것

일반 Spring MVC 샘플은 이 중 어느 것도 맞지 않습니다. 패키지 구조도 다르고, 설정 파일 위치도 다르고, 라이브러리 버전도 다릅니다.

그러니 공통 컴포넌트를 얹는 순간 빈 정의가 부딪히고, 설정 파일을 못 찾고, 라이브러리 버전이 엇갈립니다. 하나를 고치면 다음 게 나오는 상황이 됩니다.

그래서 남는 교훈

전자정부 프레임워크는 나중에 붙이는 라이브러리가 아니라, 처음에 고르는 템플릿입니다.

프로젝트를 만드는 시점에 전자정부 프로젝트로 생성해야 합니다. 이미 만들어 놓은 Spring 프로젝트에 나중에 얹으려고 하면, 결국 그 프로젝트를 전자정부 구조로 전부 바꾸는 일이 됩니다. 그럴 바에는 새로 만드는 게 빠릅니다.

제가 그날 내린 결론도 결국 그거였고요 ^^;;

혹시 지금 같은 상황에 계시다면, 붙들고 계신 프로젝트를 지우는 게 빠른 길일 수 있습니다. 저는 그걸 반나절 헤매고 나서야 알았습니다 T.T


맺음말

다음 글에서 정상적으로 동작하는 전자정부 프레임워크를 보여 드리겠습니다.

빈 프로젝트에서 시작하니 훨씬 수월했습니다 ^^

감사합니다.

반응형

+ Recent posts