현실적인 개발자 로드맵(7) - Spring Boot으로 Spring을 더욱 편리하게..
자동 구성
스타터 의존성
[전통적인 Spring MVC 설정]
스프링 MVC 프로젝트에 필요한 라이브러리들을 설정해놓은 pom.xml, 웹 애플리케이션 개발을 위한 dispatcher-servlet.xml과 web.xml 설정을 개발자가 직접 해주어야 했습니다.
물론 Spring Boot에서도 설정을 하긴합니다. 아래와 같이 말이죠.
[Spring Boot의 설정]
build.gradle 파일에서 Spring MVC 웹 애플리케이션 설정을 위해서 dependencies 항목에 필요한 라이브러리들을 설정하는데 단 5줄밖에 되지 않습니다. web.xml이나 dispatcher-servlet.xml 같은 설정은 아예 사라져버린것이죠.
이게 끝입니다. 더 이상 설정할게 없으며, 이 5줄만으로 기존의 Spring MVC 웹 애플리케이션에 JPA와 H2 데이터베이스 기능까지 포함한 설정이 자동으로 구성이 되는것입니다. 엄청나지 않나요? 저만 그렇게 느끼는건 아닌지.ㅎ ^^;
그리고 추가적으로 기존의 Spring MVC 기반의 Todo 애플리케이션을 Spring Boot 기반으로 변경하면서 구현 코드는 어떻게 변경이 되었는지 잠깐 살펴보도록 하겠습니다.
이번 Spring Boot 기반 Todo 애플리케이션에는 할일 목록을 DB에 저장하기 위한 기술로 JPA(Java Persistence API)를 사용하였습니다. JPA는 데이터베이스의 테이블과 자바의 Entity 객체를 매핑하여 데이터를 손쉽게 DB에 저장하는 ORM(Object Relational Mapping) 기술중에 하나로써 Spring을 사용하여 JPA를 손쉽게 사용할 수 있습니다.
아래 코드를 잠깐 보시겠습니다.
==== Todo.java ====
DB의 todo 테이블과 매핑되는 Todo 엔티티 클래스인데요. @Entity 애노테이션을 붙여서 엔티티 클래스라는것을 명시했고, @Id 애노테이션을 붙여서 기본키를 설정했습니다. 그리고 10번 라인에 @Data 애노테이션을 추가해서 Todo 클래스의 멤버 변수들에 대한 getter/setter 메서드를 간편하게 추가하였습니다.
참고로 Lombok이라는 라이브러리를 사용하여 클래스의 생성자, toString(), getter/setter 등의 다양한 설정을 간편하게 할 수 있기때문에 Lombok은 개발자들이 많이 사용하는 라이브러리중의 하나입니다.
==== TodoRepository.java ====
이 클래스는 Todo 클래스의 객체를 DB에 저장해주는 기능을 하는 Repository 클래스입니다. JpaRepository를 상속받고 있는 인터페이스인데요. 구현된게 아무것도 없음에도 불구하고 할일을 저장해주고 조회해주는 CRUD 기능을 모두 다 할 수 있습니다.
마지막으로 할일에 대한 요청을 받아들이는 TodoController 클래스를 한번 보실까요?
==== TodoController.java ====
이전 포스팅에서는 @RequestParam 애노테이션을 사용하여 할일 데이터를 register()의 파라미터로 받았는데 이번에는 todoName과 todoDate 파라미터의 값이 Todo 객체에 바로 매핑이 되도록 한 후, TodoRepository 클래스의 save()를 사용하여 DB에 저장하는 로직으로 변경되었습니다.
28번 라인에서는 TodoRepository 클래스의 findAll()을 사용하여 저장된 모든 할일 데이터를 조회하도록 변경되었습니다.
실제 DB에 저장을 하는 로직으로 변경되었지만 여전히 소스코드가 필요한 비즈니스 로직만 포함하는 깔끔함을 유지하는것을 보실 수 있습니다.
자, 간단하게나마 Spring Boot의 편리함에 대해서 살펴보았는데요. Spring Boot이 개발자가 비즈니스 로직 개발에 집중하도록 얼마나 많은 노력을 하였는지 여전히 현실적으로 와닿지 않는 분들께서는 저처럼 Spring Boot을 사용하지 않고 Spring MVC 애플리케이션 구성을 해보신다음 Spring Boot으로 개선해보는 작업을 한번쯤 해보셨으면 하는 바램을 가져보겠습니다.
자, 그럼 이번 시간에 새롭게 추출해야 될 기술들에는 무엇이 있는지 살펴보겠습니다.
[Spring Boot이 추가된 로드맵]
개발자 로드맵에 새롭게 추가된 기술입니다. ^^ Spring Boot은 당연히 추가가 되었구요. 그 외에 JPA와 H2를 추가하였는데요.
JPA는 데이터베이스에 데이터를 추가하는 대표적인 ORM 기술로써 괜찮은 회사(여기서 괜찮은 회사라함은 기술 트렌드를 적극적으로 받아들이는 회사로 칭하겠습니다.^^;)에서 일을 하고 싶다면 꼭 알아두셨으면 하는 기술중에 하나입니다.
H2는 그 자체로는 단순히 데이터베이스의 한 종류입니다. 일반적인 데이터베이스와의 차이점이라면 In memory DB 즉, 애플리케이션 실행을 종료하면 저장된 데이터는 사라지는 내장 DB라는것입니다. 제가 말씀드리고 싶은것은 H2 자체를 배우라기보다는 In memory DB를 활용할 줄 알아야한다는 것입니다. 나중에 Spring으로 개발을 진행하다보면 단위 테스트 코드를 짜야 되는 경우가 많은데 이 경우에 H2 같은 In memory DB를 활용하면 편리하게 단위 테스트 코드를 DB와 연계할 수 있습니다.
자, 이번 시간에는 Java 개발자(웹 개발자) 로드맵에 Spring Boot을 추가를 해보았는데요. 다음 시간에는 '현실적인 개발자 로드맵 시리즈'의 마지막 편을 포스팅 해보도록 하겠습니다. 시리즈로 계속해서 포스팅을 할 수 있지만 다른 기술들에 대해서 구체적인 얘기들을 많이 해야되겠기에 어쨌든 다음 시간에 '현실적인 개발자 로드맵 시리즈'를 마무리 하겠습니다. ^^;
오늘이 2019년의 첫날인데 다들 새해에 목표하신바를 잘 이룰 수 있도록 좋은 출발하시기를 바래보겠습니다. 저도 올 한해 열심히 열심히 살아보도록 하겠습니다.
그럼 다음 시간에 다시 뵐게요~ 새해 복 많이 받으세요!(Happy New Year!)
★ [Kevin의 알기 쉬운 Java 로드맵 이야기] 인프런 강의 바로 가기
'현실적인 개발자 로드맵' 카테고리의 다른 글
현실적인 개발자 로드맵(8) - Angular 그리고 최종 로드맵 (4) | 2019.01.29 |
---|---|
현실적인 개발자 로드맵(6) - Spring의 탄생 (1) | 2018.10.03 |
현실적인 개발자 로드맵(5) - jQuery의 등장 (1) | 2018.09.21 |
현실적인 개발자 로드맵(4) - Ajax의 등장 (3) | 2018.09.14 |
현실적인 개발자 로드맵(3) - JSP 모델2 (1) | 2018.09.07 |