Spring Legacy MVC Project 만들 수 없을 때 해결 방법
안녕하세요. 2024년 중반이 되어서도 스프링 부트가 아닌 Spring Legacy MVC Project를 통해
당장이라도 작게 토이프로젝트라던가 잠깐 협업을 해야하는 경우가 있을 수 있습니다.
그러나 요즘 STS-3에서부터는 MVC 프로젝트 생성을 지원하지 않더군요.
뭐 이클립스에 Spring플러그를 설치하녜 마녜 그렇게 조치했고들 하나 이제는 정책이 변경되어 안되는것 같습니다.
그래도 수동으로 셋팅하는 방법이 있어 그 방법을 공유하고자 이 포스팅을 올립니다.
2024년 5월 1일 기준으로 여러 블로그, 티스토리, 챗지피티 따라했으나 다들 마켓플레이스에서 다운받아라 그러는데 ... 수동으로 직접 진행하는 방법입니다. 소요시간 5분 이내입니다. 꼭 진행해주시기 바랍니다.
누구나 따라할 수 있으니 천천히 따라하시면 되겠습니다. 감사합니다.
0. 문제점
현재 위 사진처럼 이클립스 환경에서 New > Spring legact Project 를 통해 스프링 레거시 프로젝트를 생성하고자 했으나 심플 프로젝트만 나오고 더이상 나타나지 않는 모습입니다.
이상태에서 진행하겠습니다.
1. 환경 셋팅
저는 STS-3버전을 통해 진행하겠습니다.
https://uno-kim.tistory.com/246
이클립스 Spring Tool Suite 4 설치파일 / STS 4 파일 설치 / 나만의 환경설정셋팅
1. 이클립스 4 설치 - 내가 개인적으로 가지고있음 우선 sts4이후 버전은 계속해서 나오고있지만 3.9.## 버전인 이제 종료되었다 그러나 깃허브에는 존재한다. 그래서 우선 깃허브에 있는 링크를 올
uno-kim.tistory.com
혹시 STS가 현재 불안정하여서 STS 및 이클립스를 설치해야하신다면 위 링크를 통해 진행하시면 되겠습니다.
저의 경우 STS 3.9.18.RELEASE 버전으로 진행하고 Java는 11로 진행하겠습니다.
2. Dynamic Web ProJect 를 생성
프로젝트 명을 입력합니다.
여기서 중요한것은 반드시 톰캣 버전은 9.0버전 이하를 선택해주세요, 나머지는 따로 입력할 필요가 없습니다.
3. 프로젝트 안정화
우선 다이내믹프로젝트를 생성하면 위처럼 새로운 프로젝트가 생깁니다. 일부 사용자들의 경우 버전이 잘맞아서 별다른 오류가 없다면 4번 섹터로 바로 넘어가시면 되겠습니다.
위 처럼 오류가 발생한다면 대부분 자바버전, 컴파일러버전이 맞지않아 발생합니다.
만약 다른 오류라면 따로 댓글을 남겨서 문의해주세요.
아래와 같이 조치하면 되겠습니다.
프로젝트설정은 어지간하면 알트 + 엔터를 눌러서 프로퍼티즈를 열어서 진행하시면 되겠습니다.
1. 컴파일러 버전 설정
프로퍼티즈에서 자바컴파일러에서 버전을 17에서 11로 변경합니다.
두번쨰로 아래사진처럼 projects facets 를 검색후 자바 버전을 17 > 11로 수정
2. 자바 버전 설정
오류가 모두 없어진모습니다.
4. Convert to Maven Porject
이제 이 프로젝트를 메이븐 프로젝트로 변경하는 방법입니다.
프로젝트 우클릭 > 컨피겨 > 컨버트 투 메이븐 프로젝트 > 팝업에서 피니시 클릭 > 완료
5. 스프림 프레임 워크 의존성 추가
이제 pom.xml에 의존성을 추가해야합니다 내용이 기니 글을 접겠습니다. 저의경우 스프링 버전을 5.3.27로 하겠습니다.
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>project</groupId>
<artifactId>project</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.27</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.27</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.27</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.27</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.3.27</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.3.27</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<release>11</release>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.3</version>
</plugin>
</plugins>
</build>
</project>
메이븐이 모두 업데이트가 된다면 위처럼 라이브러리가 생성되게됩니다.
6. 스프링 xml 파일 생성 : web.xml , root-context.xml , servlet-context
root-context.xml 생성
스프링프로젝트에서 설정 및 구성하는데 필요한 파일 3개입니다. 이 파일 3개가 있어야 스프링으로 동작할 수 있습니다.
우선 제 프로젝트의 구성은 아래와 같습니다.
여기 WEB-INF 폴더안에 이동해줍니다.
SpringLegacy\src\main\webapp\WEB-INF
그리고 위처럼 신규 > 기타 > 스프링폴더 > 스프링 빈 컨피겨 파일 을 눌러서 넥스트를 누릅니다.
그렇게 된다면 아래와 같게됩니다.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">
</beans>
servlet-context
동일하게 파일을 만든후 빈즈, 콘텍스트, mvc, tx이렇게 추가해서 만들어줍니다.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">
</beans>
web.xml
이제 web.xml 입니다. 이번엔 보통 xml 파일을 만들듯 만들어줍니다.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1" id="WebApp_ID" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee https://java.sun.com/xml/ns/javaee/web-app_3_1.xsd">
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/root-context.xml</param-value>
</context-param>
<servlet>
<servlet-name>app</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>app</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
여기서 중요한것은
동일하게 네이밍을 해주시기 바랍니다.
7. 설정완료 및 실행
톰캣 9.0을 베이스로 서버를 시작해보겠습니다.
이렇게 나온다면 성공적으로 설치된것입니다.
이후로는 이제 최초화면을 띄우고 좀더 스프링 레거시 MVC 프로젝트 처럼 만들겠습니다.