TIL_20221128_스프링에서 스프링 부트로

창고·2022년 11월 28일
0

서적 : 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>    
  • 반복문 처리
    • 반복 필요 태그에 th:each를 적용
<ul>
  <li th:each="str : ${list}" th:text="${str}"></li>
</ul>
  • <th:block> 이라는 별도의 태그 이용
<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

profile
공부했던 내용들을 모아둔 창고입니다.

0개의 댓글