서적 : http://www.yes24.com/product/goods/112373280
Spring + MyBatis + JSP 실습 겸 리마인드용으로 공부 중입니다.
1. 스프링 부트 소개
(1) 기존 개발에서 달라지는 점들
- Auto Configuration (자동 설정)
- 스프링과 비교하였을 시 추가한 모듈 설정이 전혀 필요하지 않고 설정 자체가 단순하며, 자동으로 모듈 추가 시 관련 설정을 찾아서 실행
- application.properties 파일을 이용하거나 application.yml 파일을 이용
- 파일 설정을 피하고 싶다면 @Configuration이 있는 클래스 파일을 만들어 설정 추가 가능
- DataSource : HikariCP를 기본으로 이용하므로 HikariCP 라이브러리 import나 Config를 만들 필요가 없음
- 내장 톰캣
- 별도의 서버 설정 없이 개발이 가능하며 실행이 가능
- 별도의 WAS 설정 없이도 main()의 실행을 ㄹ통해 프로젝트 실행
- 물론 다른 WAS에 스프링 부트로 작성된 코드를 올려서 실행하는 것도 가능
- 스프링 부트 프로젝트를 실행 가능한 jar 파일로 만들고 다른 운영체제에서 실행하는 작업도 가능
- 직접 필요한 라이브러리를 기존 build.gradle 파일에 추가하는 설정
- 빈 설정은 XML 대신 자바 설정을 이용하는 것으로 변경
- 스프링 부트에서도 JSP를 이용할 수 있으나 Thymeleaf (템플릿 엔진)을 활용하는 경우가 많음
- 최근에는 화면을 구성하지 않고 데이터만을 제공하는 API 서버 형태 활용
- MyBatis도 활용이 가능하나 JPA를 이용하게 됨
- 자동 리로딩 설정
- 로그 레벨의 설정 : 기본적으로 Log4j2가 추가되어 있어 라이브러리 추가가 필요 없으며, application.properties 파일을 이용해 로그 설정 추가 가능
- 테스트 환경과 의존성 주입 테스트
- 스프링은 테스트 라이브러리를 추가하고 JUnit 역시 직접 추가해야 하나 스프링 부트는 이미 테스트 관련 설정이 완료되며 테스트 코드도 생성되어 있음
(2) 스프링 부트에서의 웹 개발
- 컨트롤러 / 화면을 개발하는 것은 기존과 유사하나 web.xml, servlet-context.xml과 같은 웹 관련 설정 파일이 없음 -> 이를 대신하는 클래스를 작성
- 화면 표시는 Thymeleaf를 이용
- API 서버 : @RestController를 통해 화면이 아닌 JSON 데이터를 출력
2. Thymeleaf
(1) Thymeleaf 기초 문법
- 네임스페이스(xmlns) 에 Thymeleaf를 지정 -> 'th:'로 시작되는 모든 기능 활용 가능
- 주석 처리 : '을 이용하는 것이 좋음
- th:with : 변수를 선언
<div th:with="num1 = ${10}, num2 = ${20}">
<h4 th:text="${num1 + num2}"></h4
<div>
<ul>
<li th:each="str : ${list}" th:text="${str}"></li>
</ul>
<ul>
<th:block th:each="str: ${list}"
<li>[[${str}]]</li>
</th:block>
</ul>
- 반복문의 status 변수 (th:each 처리 시) - 반복문의 내부 상태에 변수 추가해서 사용, index/count/size/first/last/odd/even 등을 이용 (변수명은 사용자 지정 가능)
<ul>
<li th:each="str,status: ${list}">
[[${status.index}]] -- [[${str}]]
</li>
</ul>
- th:if / th:unless / th:switch
- 제어문의 형태, if와 unless는 사실상 별도의 속성으로 사용 가능
- th:switch는 th;case와 같이 사용하여 Switch 문 처리 시 사용
(2) Thymeleaf 특별 기능
3. Spring Data JPA, QueryDsl