
평소에 Spring Framework, JPA등 완성도 있는 프레임워크들을 사용하다보니 프레임워크에 정확한 동작원리를 깊이 있게 알지 못 한다는 느낌을 받았고
최근 다양한 프레임워크 위주로 취업준비를 하는 개발자들에 대한 일침아닌 일침을 날리는 유튜브 쇼츠 영상을 보았었다.
댓글을 확인해보니 새로운 기술, 다양한 프레임워크를 통해 편리한 개발을 지향하는 것은 좋지만 정확한 원리를 알지 못하고 주먹구구 식으로 프레임워크를 사용하는 신입개발자들이 많다는 댓글을 보았다.
아무래도 프레임워크라는게 반복적으로 사용되는 코드들을 미리 구현하여 편리하게 사용하도록 인터페이스화 한 것이기때문에 내부코드를 들여다 볼 기회가 거의 없기때문에 사용이유에 대해서 정확한 정의를 내리는 것이 쉽지 않았다.
물론 댓글 내용중 프레임워크 사용에대한 부정적인 내용만 있는 것이 아니라 후에 유지보수를 위해서는 이 방법이 맞다 등 긍정적인 의견들도 많았다.
어쨌든 레거시 코드로 간단한 게시판 코드라도 한 번 구현해보면 스프링, JPA프레임워크들을 이해하고 깊이있게 사용하는데 조금이라도 보탬이 되지 않을까 생각하여 레거시 프로젝트를 개발하도록 다짐하였다.
Spring.io를 사용하지 않고 쌩Java프로젝트에 서블릿을 주입하고 톰캣 설정하는 것부터 시작하였다.
먼저 Java프로젝트를 생성해주었다.
JDK 또한 8버전을 사용할까 고민하였지만, 스트림, 람다와 같은 주요 기능들이 8버전에 나왔으며, 최근 버전에서는 그 기능들이 향상되고 최적화되었다고 생각하여 JDK버전은 그대로 21버전을 사용하였다. (최근에 추가된 Java 기능들은 사용하지도 않음)
사실 Gradle을 통해서 의존성 주입을 하면 Servlet을 복사 붙혀넣기만으로 사용할 수 있지만, 한 번쯤은 직접 프로젝트에 적용해보는 것도 나쁘지 않을 것 같아서 직접 적용해보기로 했다. 그럼에도 Build를 Gradle로 설정한 이유는 없다.. 캡쳐해놓고 포스팅하고 보니 Gradle로 프로젝트를 생성했다는 것을 지금 확인했다.
이제 Servlet을 사용하기위해서 서블릿을 프로젝트에 의존성을 주입해주어야한다.
File -> Project Structure -> Libraries -> From Maven -> javax.servlet 검색 후 servlet-api를 추가해준뒤 apply를 눌러준다.
그러면 아래와 같이 라이브러리 디렉터리에 servlet이 추가된 것을 확인할 수 있을 것이다.
그리고 클래스를 생성해 HttpServlet을 상속해보자 그럼 아래와 같은 에러로 HttpServlet클래스를 찾을 수 없다고 나올 것이다
가져온 라이브러리의 classpath를 연결하지 못했다는 의미인데 이 상태에서 엔터를 눌러 라이브러리를 추가해주자
그러면 이제 Servlet을 사용할 수 있을 것이다 !
이제 프로젝트에 WAS인 톰캣을 설정해보자
Run -> Edit Configurations
Local로 선택하여 톰캣서버를 추가해주고, 다운로드받은 톰캣 버전을 추가해준다.
그럼 artifacts가 설정되어있지 않다고 경고 메시지를 보내주는데 옆에 있는 Fix버튼을 클릭하여 아래와 같이 Artifacts를 추가해준다
Web Application Exploed로 설정해주었다.
이 설정은 Build와 관련된 설정으로 후에 추가적으로 공부해보도록하겠다.
이제 모든 설정을 완료했으니 Apply를 누르고 OK버튼을 누르고 프로젝트를 실행해보자
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!