Spring legacy 개발 환경 구축

강정우·2023년 11월 13일
0

spring

목록 보기
23/25

Spring legacy 개발 환경 구축

  • 이번 프로젝트에서 앞서 개발되어있는 legacy 코드를 이용해서 수정과 추가를 통하여 개발을 진행하기로 하였다.
legacy 환경은

spring 4.3.16 ver
packaging : war

로 되어있었다.

  • 이때 내가 개발환경을 구축하기위해 몇가지 공부한 내용을 정리하려한다.

1. spring과 boot의 큰 차이

  • 뭐 앞서 boot의 장점중 하나가 tomcat같은 내장 서버가 있고 또 다른 추가적인 설정이 필요없어서 굉장히 개발자 친화적이게 개발이 가능하다고 언급했었다.

  • 즉, spring 프로젝트는 따로 java -jar {jar파일이름}.jar|{jar파일이름}.war 으로 간단하게 서버를 실행할 수 없다는 것이다.

  • 하지만 spring으로는 그게 불가능 하여 웹 서버 또는 서블릿 컨테이너(예: Apache Tomcat, Jetty 등)에 해당 .war 파일을 배포해야 한다.

2. 톰캣 version의 고르기

  • 사실 그냥 stable한 버전이라면 아무 버전이나 갖다 써도 되는 줄 알았다. 하지만 이는 큰 착각이었다. 약 2시간이 넘는 삽질에는 바로 톰캣 버전이 범인이었다.

  • 톰캣 버전은 Spring Framework와 각각의 버전이 서로 호환되어야 제대로 작동한다.

  • Tomcat 10은 Servlet 5.0, JSP 3.0, EL 4.0, WebSocket 2.0 및 Authentication 2.0을 지원하며, 이는 Jakarta EE 9의 스펙을 따르고 있다.

  • 반면에 Tomcat 9은 Servlet 4.0, JSP 2.3, EL 3.0, WebSocket 1.1 및 JASPIC 1.1을 지원하며, 이는 Java EE 8의 스펙을 따르고 있다.

  • 즉, 당신의 Spring 프로젝트가 해당 라이브러리들의 버전에 맞지 않는다면 당연 지원을 하지 않기에 동작하지 않는다.

  • 따라서, 당신의 Spring 프로젝트가 Java EE 8 스펙을 기반으로 하고 있다면 Tomcat 9를 사용해야 한다.
    서버와 프레임워크의 버전을 맞추는 것은 중요한 작업 중 하나이다.

3. DB 설정하기

  • 당연 back-end를 사용하기 전에 db를 사용해야한다. 나는 책임연구원님께 받은 sql 파일이 있는데 이는 5백만 줄 정도 되었다. 최초에는 그냥 내가 사용하는 dbeaver에 옮겨서 그냥 스크립트를 실행하려 했으나 하이디 sql을 사용하면 스크립트 추출과 입력도 한 큐에 가능하다.

  • 설치완료 후 실행하면 세션을 설정하고 들어가면 된다. 참고로 사용자, 암호, 포트는 db 설치했을 때 본인이 설정한 값을 넣으면 된다.

  • 최초에 설치를 하고나면 위 사진에서 "sincheon" DB를 제외하고 나머지 4개가 있을 텐데 DB는 본인이 사용하고 싶은 대로 생성 후 SQL 파일 실행 버튼으로 .sql 파일을 찾아서 실행해주면 위 사진처럼 데이터가 들어간다.

4. 톰캣으로 war 배포하기

  • DB까지 설치했다면 해당 config 정보를 spring 플젝의 config.properties 파일에 잘 작성하고

  • mvn clean package 명령어를 통해서 .war 파일을 생성하면 된다.

  • 그리고 앞서 선택한 톰캣 버전을 열고 원하는 폴더에 위치하고 webapps에 들어가면 이렇게 5개의 폴더가 위치할 텐데 여기서 ROOT 폴더가 현재 127.0.0.1:8080 로 들어가면 나오는 톰캣 광고 html이다.
    그래서 이 ROOT를 날려주고 위에서 설정한 .war 파일을 여기에 복붙하고 이름을 ROOT.war로 바꿔준다.

  • 그리고 bin 폴더에서 startup.sh를 누르면 알아서 ROOT.war 폴더를 압축해제하여 실행한다.

  • 그리고 127.0.0.1:8080 으로 들어가면 비로소 legacy spring project를 만날 수 있다.

  • 마지막으로 압축이 풀린 ROOT 폴더에 \WEB-INF\classes\config.properties 파일에 설정이 잘 되어있는지 까지 확인하면 된다.

spring boot는 필요없음 ㅋ

  • spring boot가 등장하면서 spring에서 위에처럼 WAS설치하고(여기서는 tomcat) war를 만들고 WAS에 배포하고 또 그전에 설정을 잡아줘야하는데 되게 복잡하고 귀찮은데 이를 한큐에 해결해버렸다.

  • spring boot를 build하면 jar 파일이 나오는데 이 jar파일안에 서버를 넣어서 build 해버린다. 그래서 그냥 이 jar 파일을 서버pc에 가져가서 java --jar 하면 서버가 뜨는게 그 이유이다.

about.xxx.js 에러

이는 node version 에러다. 따라서 nvm을 통해서 front-end 와 back-end 의 버전을 맞춰주는 작업을 우선 해야한다.

IntelliJ 에 Tomcat 설정하기

  1. 하단 사진에서 혹은 setting dptj Edit Configurations 들어가서

  2. Tomcat Server Local 에 들어간다. 이때 아마 대부분 무료로 쓸꺼니까 TomEE 를 선택하지 않도록 하자.
    참고로 위의 TomEE 는 잘 못 설정 한 사진이다.

  3. 설치한 톰켓의 bin 바로 위 폴더까지 잡아주고

  4. Deployment 로 넘어와서 + 를 눌러

  5. 아티팩트와 하단 Application context 를 본인의 프로젝트 기본 경로에 맞춰 넣어주면 된다.
    나같은 경우는 기본 경로가 없기에 / 로 설정해두었다.

profile
智(지)! 德(덕)! 體(체)!

0개의 댓글