티스토리 뷰
서론
Spring과 같이 Java 프레임워크로 웹을 개발하다보면 불편하면서 비효율적이라고 들었던 생각이 소스의 사소한 부분의 수정 조차도 서버의 재기동이 필요하다는 것이었다. 크기가 크지않은 프로젝트의 경우 올렸다 내렸다를 반복해도 귀찮음만 참으면 되지만 서버가 올라가는데 길게는 시간단위 짧게는 십분단위의 시간을 소요하게 된다면 참으로 난감한 상황에 부닥치게 된다.
이번에 SpringBoot를 처음 공부하면서 Boot를 사용하면 초기 설정이 필요 없다는 것과 동시에 가장 인상 깊었던 것이 SpringLoaded를 이용하여 소스 수정 시에도 서버의 재시작 없이 변경된 내용을 확인 할 수 있는 것이었다.
이번 포스팅에서는 SpringBoot에 대한 간략한 설명 Spring프로젝트와 SpringBoot프로젝트 구조의 비교 및 SpringLoaded를 적용에 대한 내용을 다룬다. 이 글을 작성하는 시점에 SpringBoot의 버전은 1.4.2.RELEASE SpringLoaded의 버전은 1.2.6.RELEASE이다.
SpringBoot
스프링 프레임워크가 시간이 지남에 따라 관련된 프로젝트가 늘어나면서 무엇을 사용하고 또 어떻게 이것들을 연결지어 사용할 것인지에 대한 문제가 생기면서 초기설정에 상당한 시간을 소요하게 되었다.
하지만 SpringBoot가 등장함에 따라 초기 설정에 드는 비용이 줄어 들게 되었고 적응 양의 코드로 애플리케이션을 작성할 수 있게 되었다.
지금은 SpringBoot에 대해서 처음 보기 시작한 걸음마 단계이며 추후 공부를 통해 SpringBoot의 확실한 이점을 알아보고자 한다.
Spring Project Directory vs SpringBoot Project Directory
[그림1. Spring Project Directory 구조 vs Spring Boot Directory 구조]
위의 이미지를 보면 Blog라는 Project와 BootInit이라는 일반 Spring Project와 Spring Boot Project 두개가 있다. 딱 보면 알 수 있는 부분이 Blog Project에는 기본적으로 distpatcherServlet에 설정을 위한 distpatcher-servlet.xml(이름은 각프로젝트마다 다를수 있음) 이라는 파일이 존재하는 것을 알 수 있다. 하지만 Spring Boot Project를 보게 되면 초기 구조에서 어떠한 설정 파일을 찾아 볼 수 없다. 이후 자신이 원하는 부분에 대한 설정은 추가 할 수 있겠지만 초기에 필요한 설정은 필요하지 않다.
SpringLoaded 적용하기
SpringLoaded를 적용하는 방법은 상당히 간단하다. maven을 사용한다면 다음 아래와 같은 Code를 pom.xml에 추가만 해주면 동작하게 된다.
gradle을 사용할 경우 아래의 Code를 추가해주면 동작하게 된다.
SpringLoaded가 적용된 SpringBoot 동작
초기 BootInit Project의 main메소드가 있는 소스코드를 보면 아래와 같다.
이와 같은 상황에서 http://localhost:8080을 호출하게 되면 아래와 같은 출력화면을 나타내는 창을 볼 수 있게된다.
[그림2. / 호출 상황에서의 화면]
이 상황에서 BootInitApplication에 정의 되지않은 URL(http://localhost:8080/new) 호출을 한번 해보자.
[그림2. /new URL이 없는 상태에서의 호출 상황에서의 화면]
여기서 추가를 하게되면 일반 Spring Project의 경우 서버의 재기동이 필요하겠지만 SpringLoaded가 적용된 Boot Project에서는 바로 출력화면을 볼 수 있다.
[그림3. /new URL추가후 서버 재기동 없는 호출 상황에서의 화면]
결론
Spring Framework는 견고하고 생산성 좋은 Framework임에는 누구나 동의할 것이라고 생각한다. 하지만 Framework를 사용하기 위한 초기 설정이 많아지는 문제점과 하위 프로젝트들간의 연결에 대한 문제점이 발생 되었고 이것을 해결하기 위해 내놓은 SpringBoot는 Spring이라는 Framework에 또 다른 도약을 만들지 않았나 라고 생각이 든다. 그리고 SpringLoaded를 이용한 서버재기동 없는 수정사항 적용은 더 좋은 생산성을 발휘하는데 한 몫을 크게 한다. JRebel이라는 유료 프로그램중에 SpringLoaded와 같은 기능을 제공하는 것이 있지만 무료인 SpringLoaded를 사용한 것만으로 좋은 충분히 높은 생산성을 낼 수 있을거 같다.
'SpringBoot' 카테고리의 다른 글
SpringBoot DataSource 여러개 사용하기 (0) | 2016.11.24 |
---|---|
SpringBoot CORS 문제 해결하기 (2) | 2016.11.18 |