# Spring Boot + JPA 전환 진행 내역 ## 변경 목적 - 기존 전자정부프레임워크(MyBatis 중심) 구조 위에 Spring Boot + JPA 기반을 추가해 점진 전환을 시작했습니다. - MariaDB 스키마와 인덱스 정보를 반영해 JPA 엔티티/인덱스 매핑을 진행했습니다. ## 변경 요약 - Spring Boot 1.5.22.RELEASE 기반 구성 추가 - JPA 엔티티 10종과 리포지토리 10종 신규 생성 - 테스트용 H2 구성 및 기본 JPA 저장/조회 테스트 추가 ## 상세 변경 사항 ### 빌드 설정 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/pom.xml` - `spring-boot.version`과 `java.version` 속성 추가 - `spring-boot-dependencies` BOM 추가 - `spring-boot-starter-web`, `spring-boot-starter-data-jpa`, `spring-boot-starter-tomcat` 추가 - `spring-boot-starter-test` 추가 - `h2` 의존성 `test` 스코프로 변경 - 테스트 스킵 해제(`skipTests=false`) - `spring-boot-maven-plugin` 추가 ### 애플리케이션 부트스트랩 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/BaseCmsApplication.java` - Spring Boot 진입점 추가 - WAR 배포를 위한 `SpringBootServletInitializer` 확장 ### 애플리케이션 설정 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/resources/application.yml` - MariaDB 접속 정보 환경변수 주입 방식 추가 - JPA 기본 설정(ddl-auto none, open-in-view false) ### JPA 엔티티 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/domain/Comtccmmnclcode.java` - 공통분류코드 엔티티 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/domain/Comtccmmncode.java` - 공통코드 엔티티, 인덱스 `COMTCCMMNCODE_FK1` 매핑 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/domain/ComtccmmndetailcodeId.java` - 공통상세코드 복합키 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/domain/Comtccmmndetailcode.java` - 공통상세코드 엔티티, 인덱스 `COMTCCMMNDETAILCODE_FK1` 매핑 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/domain/Comtnmber.java` - 회원정보 엔티티, 인덱스 `COMTNMBER_IE1`, `COMTNMBER_IE2` 매핑 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/domain/Comtnauthorinfo.java` - 권한정보 엔티티 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/domain/Comtnroleinfo.java` - 롤정보 엔티티 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/domain/ComtnauthorrolerelateId.java` - 권한롤관계 복합키 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/domain/Comtnauthorrolerelate.java` - 권한롤관계 엔티티, 인덱스 `COMTNAUTHORROLERELATE_FK2` 매핑 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/domain/ComtnrolesHierarchyId.java` - 롤 계층구조 복합키 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/domain/ComtnrolesHierarchy.java` - 롤 계층구조 엔티티, 인덱스 `COMTNROLES_HIERARCHY_FK1` 매핑 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/domain/Comtnsiteinfo.java` - 사이트정보 엔티티 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/domain/Comtnsitemnu.java` - 사이트메뉴 엔티티, 인덱스 `COMTNSITEMNU_IE1`, `COMTNSITEMNU_IE2` 매핑 ### JPA 리포지토리 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/repository/ComtccmmnclcodeRepository.java` - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/repository/ComtccmmncodeRepository.java` - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/repository/ComtccmmndetailcodeRepository.java` - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/repository/ComtnmberRepository.java` - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/repository/ComtnauthorinfoRepository.java` - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/repository/ComtnroleinfoRepository.java` - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/repository/ComtnauthorrolerelateRepository.java` - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/repository/ComtnrolesHierarchyRepository.java` - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/repository/ComtnsiteinfoRepository.java` - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/repository/ComtnsitemnuRepository.java` ### 테스트 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/test/resources/application-test.yml` - H2 인메모리 DB 설정 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/test/java/com/foxedu/basecms/BaseCmsJpaTest.java` - 공통분류코드 저장/조회 테스트 ## 남은 작업(요약) - 나머지 테이블 엔티티/리포지토리 생성 - 관계 매핑(FK) 및 복합키 정교화 - 관리자 기능별 서비스/컨트롤러 전환 - MariaDB 실제 연결 기반 통합 테스트 ## 추가 변경(2차) ### JPA 엔티티 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/domain/Comschulinfo.java` - 학교정보 엔티티 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/domain/Comtecopseq.java` - 시퀀스정보 엔티티 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/domain/Comtnbanner.java` - 배너 엔티티, 인덱스 `COMTNBANNER_IE1` 매핑 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/domain/Comtnbbsctgrymaster.java` - 게시판카테고리마스터 엔티티, 인덱스 `COMTNBBSCTGRYMASTER_IE1` 매핑 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/domain/Comtnbbsctgry.java` - 게시판카테고리 엔티티, 인덱스 `COMTNBBSCTGRY_IE1`, `COMTNBBSCTGRY_IE2` 매핑 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/domain/Comtnbbsmaster.java` - 게시판마스터 엔티티, 인덱스 `COMTNBBSMASTER_IE1`, `COMTNBBSMASTER_IE2` 매핑 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/domain/Comtnbbs.java` - 게시판 엔티티, 인덱스 `COMTNBBS_IE1`, `COMTNBBS_IE2`, `COMTNBBS_IE3` 매핑 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/domain/Comtncomment.java` - 댓글 엔티티, 인덱스 `COMTNCOMMENT_FK1` 매핑 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/domain/Comtnbbssourc.java` - 게시판소스 엔티티, 인덱스 `COMTNBBSSOURC_IE1` 매핑 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/domain/Comtnbbstmplat.java` - 게시판템플릿 엔티티, 인덱스 `COMTNBBSTMPLAT_IE1` 매핑 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/domain/Comtnpopupmanage.java` - 팝업관리 엔티티, 인덱스 `COMTNPOPUPMANAGE_IE1` 매핑 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/domain/Comtnfile.java` - 파일속성 엔티티 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/domain/ComtnfiledetailId.java` - 파일상세정보 복합키 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/domain/Comtnfiledetail.java` - 파일상세정보 엔티티 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/domain/ComtnlogininfoId.java` - 로그인정보 복합키 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/domain/Comtnlogininfo.java` - 로그인정보 엔티티, 인덱스 `COMTNLOGININFO_IE1` 매핑 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/domain/Comtnloginlog.java` - 로그인로그 엔티티, 인덱스 `COMTNLOGINLOG_IE1` 매핑 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/domain/ComtnsitemaincntntsId.java` - 사이트메인컨텐츠 복합키 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/domain/Comtnsitemaincntnts.java` - 사이트메인컨텐츠 엔티티 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/domain/Comtnweblog.java` - 웹로그 엔티티, 인덱스 `COMTNWEBLOG_IE1` 매핑 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/domain/ComtsbbssummaryId.java` - 게시물통계요약 복합키 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/domain/Comtsbbssummary.java` - 게시물통계요약 엔티티 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/domain/ComtsweblogsummaryId.java` - 웹로그요약 복합키 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/domain/Comtsweblogsummary.java` - 웹로그요약 엔티티 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/domain/ComtsmlglogsummaryId.java` - 마일리지로그요약 복합키 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/domain/Comtsmlglogsummary.java` - 마일리지로그요약 엔티티 ### JPA 리포지토리 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/repository/ComschulinfoRepository.java` - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/repository/ComtecopseqRepository.java` - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/repository/ComtnbannerRepository.java` - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/repository/ComtnbbsctgrymasterRepository.java` - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/repository/ComtnbbsctgryRepository.java` - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/repository/ComtnbbsmasterRepository.java` - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/repository/ComtnbbsRepository.java` - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/repository/ComtncommentRepository.java` - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/repository/ComtnbbssourcRepository.java` - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/repository/ComtnbbstmplatRepository.java` - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/repository/ComtnpopupmanageRepository.java` - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/repository/ComtnfileRepository.java` - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/repository/ComtnfiledetailRepository.java` - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/repository/ComtnlogininfoRepository.java` - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/repository/ComtnloginlogRepository.java` - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/repository/ComtnsitemaincntntsRepository.java` - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/repository/ComtnweblogRepository.java` - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/repository/ComtsbbssummaryRepository.java` - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/repository/ComtsweblogsummaryRepository.java` - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/repository/ComtsmlglogsummaryRepository.java` ### 남은 작업(요약) - 나머지 테이블 엔티티/리포지토리 생성 - FK 관계 매핑 및 복합키 정교화 - 관리자 기능 서비스/컨트롤러 전환 ## 추가 변경(3차) ### 빌드 설정 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/pom.xml` - Thymeleaf 사용을 위한 `spring-boot-starter-thymeleaf` 추가 - Lombok 사용을 위한 `lombok` 의존성 추가 ## 추가 변경(4차) ### 빌드 설정 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/pom.xml` - Spring Boot 버전을 `2.7.18`로 변경 - Java 버전을 `17`로 변경 - 컴파일러 설정을 `java.version` 프로퍼티 기반으로 통일 ### Lombok 리팩터링 - 엔티티 30종에 Lombok 적용(`@Getter`, `@Setter`, `@NoArgsConstructor`) - 기존 getter/setter 메서드 제거 적용된 엔티티 예시: - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/domain/Comtnbbs.java` - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/domain/Comtnmber.java` - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/domain/Comtnsiteinfo.java` ## 추가 변경(5차) ### JSP → Thymeleaf 1차 이관(기계적 변환) - `WEB-INF/jsp` 및 루트 JSP 292개를 Thymeleaf 템플릿으로 변환해 복사 - 위치: `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/resources/templates` - 변환 내용(기본 규칙) - JSP 디렉티브/스크립틀릿 제거 - `c:if`, `c:forEach`, `c:out`, `spring:message` 일부 변환 - ``에 `xmlns:th` 추가 주의 사항 - ``, `` 일부 태그, 커스텀 태그, 스크립틀릿 로직은 **수동 보정 필요** - 화면 동작 검증은 아직 미완료 ### Swagger(OpenAPI) - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/pom.xml` - `springdoc-openapi-ui` 추가 ## 추가 변경(6차) ### 관리자 화면 수동 보정(1차) - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/resources/templates/egovframework/mng/template/top.html` - 타임리프 문법으로 재작성 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/resources/templates/egovframework/mng/template/bottom.html` - 타임리프 문법으로 재작성 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/resources/templates/mng/sym/ccm/CcmCmmnClCodeList.html` - 공통분류코드 목록 화면 타임리프 수동 변환 ### 컨트롤러-뷰 바인딩 보정 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/egovframework/com/mng/sym/ccm/web/CcmCmmnClCodeManageController.java` - 타임리프 페이지네이션 표시용 `paginationHtml` 모델 추가 ### Swagger 샘플 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/api/SampleApiController.java` - `/api/health` 샘플 엔드포인트 추가 ## 추가 변경(7차) ### 네이밍 축약 및 URL 통일 - 엔티티/리포지토리/복합키 클래스명을 짧은 이름으로 일괄 변경 - `/mng` 경로를 `/manage`로 통일(컨트롤러 매핑, 템플릿 링크, JSP/HTML/JS 내 URL 문자열) - 템플릿 디렉터리 구조를 `/templates/manage` 및 `/templates/egovframework/manage`로 이동 변경 예시 - `Comtnmber` → `Member` - `Comtnsitemnu` → `Menu` - `Comtnbbs` → `Bbs` - URL: `/mng/...` → `/manage/...` ## 추가 변경(8차) ### 공통코드 상세/등록 화면 이관 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/resources/templates/manage/sym/ccm/CcmCmmnClCodeRegist.html` - 공통분류코드 등록 화면 타임리프 이관 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/resources/templates/manage/sym/ccm/CcmCmmnClCodeModify.html` - 공통분류코드 수정 화면 타임리프 이관 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/resources/templates/manage/sym/ccm/CcmCmmnClCodeDetail.html` - 공통분류코드 상세 화면 타임리프 이관 ## 추가 변경(9차) ### 공통코드 화면 이관 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/resources/templates/manage/sym/ccm/cca/CcmCmmnCodeList.html` - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/resources/templates/manage/sym/ccm/cca/CcmCmmnCodeRegist.html` - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/resources/templates/manage/sym/ccm/cca/CcmCmmnCodeModify.html` - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/resources/templates/manage/sym/ccm/cca/CcmCmmnCodeDetail.html` ### 공통상세코드 화면 이관 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/resources/templates/manage/sym/ccm/cde/CcmCmmnDetailCodeList.html` - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/resources/templates/manage/sym/ccm/cde/CcmCmmnDetailCodeRegist.html` - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/resources/templates/manage/sym/ccm/cde/CcmCmmnDetailCodeModify.html` - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/resources/templates/manage/sym/ccm/CcmCmmnDetailCodeDetail.html` ### 팝업 템플릿 보정 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/resources/templates/egovframework/manage/template/popTop.html` - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/resources/templates/egovframework/manage/template/popBottom.html` ### 컨트롤러 바인딩 보정 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/egovframework/com/mng/sym/ccm/web/CcmCmmnCodeManageController.java` - `paginationHtml` 모델 추가 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/egovframework/com/mng/sym/ccm/web/CcmCmmnDetailCodeManageController.java` - `paginationHtml` 모델 추가 ## 추가 변경(10차) ### Gradle 전환 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/build.gradle` 추가 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/settings.gradle` 추가 - Gradle Wrapper 추가 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/gradlew` - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/gradle/wrapper/gradle-wrapper.properties` - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/gradle/wrapper/gradle-wrapper.jar` ## 추가 변경(11차) ### Java 버전 상향 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/build.gradle` - Gradle toolchain을 Java 21로 변경 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/pom.xml` - `java.version`을 21로 변경 ## 추가 변경(12차) ### Spring Boot 3 전환 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/pom.xml` - Spring Boot 버전 `3.2.5`로 변경 - Springdoc 의존성 `springdoc-openapi-starter-webmvc-ui`로 변경 - JSP/JSTL 의존성 Jakarta 기반으로 변경 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/build.gradle` - Spring Boot 플러그인 `3.2.5`로 변경 - Springdoc 의존성 `springdoc-openapi-starter-webmvc-ui`로 변경 - JSTL 의존성 Jakarta 기반으로 변경 ### 패키지 전환 - `javax.*` → `jakarta.*` 전역 변경(엔티티/컨트롤러 포함) ## 추가 변경(13차) ### Gradle 의존성 보정 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/build.gradle` - eGovFrame 저장소를 `https://maven.egovframe.go.kr/maven/`로 변경 - okhttp/okio 버전 상향 및 log4jdbc3 제거 - eGov MVC 의존성에서 spring-modules-validation 제외 처리 ## 추가 변경(14차) ### Spring Boot 3 호환 보정 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/resources/egovframework/spring/context-common.xml` - 멀티파트 리졸버를 `StandardServletMultipartResolver`로 교체 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/resources/application.yml` - 멀티파트 용량 설정 추가 및 주석 한글화 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/egovframework/com/cmm/view/AbstractPoiExcelView.java` - POI 기반 엑셀 뷰 공통 클래스 추가 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/egovframework/com/cmm/view/ExcelView.java` - `AbstractPoiExcelView` 상속으로 변경 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/egovframework/com/cmm/service/ExcelDownloadView.java` - `AbstractPoiExcelView` 상속으로 변경 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/egovframework/com/front/sym/log/web/EgovWebLogInterceptor.java` - `HandlerInterceptorAdapter` → `HandlerInterceptor` 변경 - `/mng` 경로 검사 → `/manage`로 변경 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/egovframework/com/cmm/web/EgovBindingInitializer.java` - `initBinder` 시그니처를 Spring 6 기준으로 수정 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/org/springmodules/validation/commons/DefaultBeanValidator.java` - 기존 spring-modules 의존성 대체 구현 추가 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/org/springmodules/validation/commons/DefaultValidatorFactory.java` - 검증 팩토리 대체 구현 추가 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/resources/egovframework/spring/context-validator.xml` - 주석 한글화 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/build.gradle` - 구버전 Jackson 의존성 제거 ### 테스트 전환 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/test/java/com/foxedu/basecms/BaseCmsJpaTest.java` - JUnit 5로 전환 ## 추가 변경(15차) ### 공통코드 검증 어노테이션 적용 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/egovframework/module/sym/ccm/ccc/service/CmmnClCodeVO.java` - 필수값/길이 제약 어노테이션 추가 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/egovframework/module/sym/ccm/cca/service/CmmnCodeVO.java` - 필수값/길이 제약 어노테이션 추가 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/egovframework/module/sym/ccm/cde/service/CmmnDetailCodeVO.java` - 필수값/길이 제약 어노테이션 추가 ## 추가 변경(16차) ### 회원관리 검증 어노테이션 적용 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/egovframework/module/uss/umt/service/UserManageVO.java` - 회원관리 필드에 Bean Validation 어노테이션 추가 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/egovframework/com/mng/uss/umt/web/UserManageController.java` - 등록/수정 시 `@Valid` 적용 및 오류 시 화면 복귀 처리 ## 추가 변경(17차) ### 게시판 검증 어노테이션 적용 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/egovframework/module/cop/bbs/service/BoardMasterVO.java` - 게시판 속성 필드에 Bean Validation 어노테이션 추가 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/egovframework/module/cop/bbs/service/BoardVO.java` - 게시물 필수값/길이 제약 어노테이션 추가 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/egovframework/module/cop/bbs/service/CommentVO.java` - 댓글 필수값/길이 제약 어노테이션 추가 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/egovframework/module/cop/bbs/service/CtgryMasterVO.java` - 카테고리마스터 필수값/길이 제약 어노테이션 추가 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/egovframework/module/cop/bbs/service/CtgryVO.java` - 카테고리 필수값/길이 제약 어노테이션 추가 ## 추가 변경(18차) ### 사이트/메뉴 검증 어노테이션 적용 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/egovframework/module/sym/mpm/service/MpmVO.java` - 메뉴 필드에 Bean Validation 어노테이션 추가 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/egovframework/module/sym/sit/service/SiteManageVO.java` - 사이트 필드에 Bean Validation 어노테이션 추가 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/egovframework/module/sym/sit/service/SiteMainContentsManageVO.java` - 사이트 메인컨텐츠 필드에 Bean Validation 어노테이션 추가 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/egovframework/com/mng/sym/mpm/web/MpmController.java` - 메뉴 등록 시 `@Valid` 적용 및 검증 중복 제거 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/egovframework/com/mng/sym/sit/web/SiteManageController.java` - 사이트 등록/수정 시 `@Valid` 적용 및 검증 중복 제거 ## 추가 변경(19차) ### 팝업/배너 검증 어노테이션 적용 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/egovframework/module/uss/ion/bnr/service/BannerVO.java` - 배너 필드에 Bean Validation 어노테이션 추가 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/egovframework/module/uss/ion/pwm/service/PopupManageVO.java` - 팝업 필드에 Bean Validation 어노테이션 추가 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/egovframework/com/mng/uss/ion/bnr/web/BannerManageController.java` - 배너 등록/수정 시 `@Valid` 적용 및 오류 처리 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/egovframework/com/mng/uss/ion/pwm/web/PopupManageController.java` - 팝업 등록/수정 시 `@Valid` 적용 및 오류 처리 ## 추가 변경(20차) ### Maven 흔적 제거 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/pom.xml` 삭제 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/.gitignore` - Maven 관련 ignore 항목 제거 ## 추가 변경(21차) ### README 갱신 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/README.md` - Gradle/Boot3/Java21 기준으로 수정 - DB 연결 설정 내용은 유지 ## 추가 변경(22차) ### DB 설정 기본값 적용 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/resources/application.yml` - datasource 기본값을 요청한 MariaDB 접속 정보로 변경 ## 추가 변경(23차) ### 로그인 페이지 연결 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/com/foxedu/basecms/config/SecurityConfig.java` - 스프링 시큐리티 기본 로그인 비활성화 - 커스텀 로그인 페이지(`/uat/uia/egovLoginUsr.do`)로 연결 - CSRF 비활성화 ## 추가 변경(24차) ### 템플릿 오류 방지 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/resources/templates/index.html` - `siteInfo`가 null일 때도 렌더링되도록 안전한 표현식 적용