전자정부 3.7 버전에 JPA + Mybatis + Spring Data Rest 적용

2018. 4. 3. 16:23IT개발/Spring Boot & Spring Data Rest & JPA

반응형

Spring Data Rest 적용 예제 



전자정부 3.7 버전에 JPA + Mybatis + Spring Data Rest 적용할때, 각 porting 한 작업순서는 아래와 같다.


1. egov3.7버전 다운


2. eGovFramee Template Project > Renewal 50 Common-Components 선택후, 템플릿 소스생성


3. 오라클 DDL,DML 실행(github 소스내 EGOV3.7_Mybatis_JPA_SpringDataRest_DDL_DML_v4.sql  참고)


4. 프로그램관리, 메뉴관리화면 추가개발(Mybatis용)완료


5. 전자정부3.5 JPA 동작소스 참고하여 적용시도 > 실패 

   > 원인: 라이브러리 버전충돌 

   > 조치: 최신버전으로 변경(egov, jpa 버전업) 및 xsd 설정변경

       context-jpa-respository.xml 파일내

         http://www.springframework.org/schema/data/jpa/spring-jpa-1.2.xsd 

     -> http://www.springframework.org/schema/data/jpa/spring-jpa.xsd


6. JPA적용 성공 


7. Mybatis와 Transaction 연동테스트시도 > 실패 

   > 원인: 각각의 transactionManager로 동작 

   > 조치 : org.springframework.orm.jpa.JpaTransactionManager 사용조치


8. Mybatis와 Transaction 연동테스트 성공


9. Spring Data Rest 적용시도 > 실패 

  > 원인 : 라이브러리 버전충돌 및 기존 SpringWebMVC와의 호환설정누락

  > 조치: 1. spring-data-rest-webmvc 최신버전으로 변경 및 일부 dependency에서 구버전 spring-data-commons 참조하여 exclude 처리 

            2. <bean class="org.springframework.data.rest.webmvc.config.RepositoryRestMvcConfiguration" />


10. Spring Data Rest 적용시도 > 실패

  > 현상 : /api/profile 요청시 응답없음. 요청

  > 원인 : /api/profile 과같은 URL요청 처리 불가

  > 조치 :  web.xml내 DispatcherServlet URL mapping 중 /* 추가 함.


11. Spring Data Rest 요청은 성공, 그런데 page요청처리 실패

  > 현상 : org.springframework.web.servlet.PageNotFound

  > 원인 : web.xml내 DispatcherServlet URL mapping 중 /* 잘못 추가함.

  > 조치 : web.xml내 DispatcherServlet URL mapping 중 / 로 변경함. (  /* -> /  ) 또는 

            java버전이면, dispatcher.addMapping("/"); ->  dispatcher.addMapping("/*");  


12. 광명의 시간... 아 해냈다. 아놔 왜케 빡세냐잉...


몇일간 삽질한 결과를 github에 올린다. 아직 완성되지 않아 더 다듬어야하므로 추후 지속적으로 업그레이드 할 예정이다.

포팅은 exception을 분석해서 stackoverflow와 각종 해외커뮤니티, google groups등을 뒤져서 해결했다

문제해결에만 초점을 맞추다보니 pom.xml내 라이브러리가 너무 무거워진 측면이 있는것 같아 추후 이것도 개선하는 작업을 시도해보겠다.


삽질한 결과가 사실 부끄러울수 있지만 

나의 삽질이 누군가에겐 작은 도움이 되길 바라는 마음에 올린다.

https://github.com/ktyuzz/egov3.7_mybatis_jpa_springdatarest


※ 혹시나 저의 소스를 보고 누구든지 질문, 첨언 부탁드립니다.

저도 열심히 배우고 갈고 닦으려는 개발자니깐요 언제든지 환영입니다^^


배움에는 높고낮음이 없으니 몰라서하는 질문도 좋습니다. 그럼으로써 저도 배우니깐요. 

아직도 저는 배움에 목마릅니다. 

기술을 접할때는 어렴풋이 이해하더라도 

기술을 숙련하고, 장인이 되려면 정확하고 명확하게 익히는게 중요하다고 생각합니다.

저도 그런 장인이 되기위해 오늘도 내일도 부지런히 갈고닦고 있으니 함께 즐겁게 신나게 개발해요!

반응형