1. 공통점
- 의존성 관리
- 빌드 자동화
2. 차이점
1) Maven
- Spring Legacy 또는 JSP/Servlet에서 주로 사용되는 빌드 도구
- pom.xml 기반
- 설정 파일(라이브러리)이 길어서 복잡함.
- 정형화된 프로젝트에 적용하기 좋음.
- 설정 파일을 직접 버전 선택해서 추가해야함.
2) Gradle
- Spring Boot에서 주로 사용되는 빌드 도구
- 스크립팅 언어 Groovy 또는 Kotlin DSL을 사용하여 설정
- 간결한 문법과 빠른 빌드 속도로 대규모 프로젝트에 적합
- 빌드 속도 최적화가 필요한 경우
- 커스터마이징 및 복잡한 로직이 필요한 프로젝트
- Spring, Java 버전에 맞춰서 알맞은 버전의 라이브러리를 가져옴.
1. 공통점
- Java 기반의 데이터베이스 연동 라이브러리
- 페이징 처리, 트랜잭션 처리, 커넥션 관리 등 기본 기능 제공
2. 차이점
1) MyBatis
- 복잡한 SQL로직 및 쿼리 최적화가 중요한 경우
2) JPA
- 단순한 SQL로직이 대부분인 경우
- 데이터베이스 독립성이 중요한 경우(DB 변경 시 JPA가 유리 / 객체 중심의 설계)
- 유지보수 및 코드 관리 효율성을 높이고 싶은 경우
1. 공통점
- MVC 패턴에서 View 역할 수행
- 동적 웹 페이지 생성에 적합
2. 차이점
1) JSP
- 이미 개발중인 프로젝트의 HTML과 Java 로직이 강하게 결합되어 있을 경우
- 비표준 문법으로 HTML과 Java 코드 혼합으로 유지보수 어려움
- XSS 공격에 취약함
2) Thymeleaf
- (되도록이면)순수 HTML 파일로 작성되어있음
- Spring Boot 기반의 프로젝트 개발시에 유리
- HTML 기반 문법으로 가독성과 유지보수성을 높임
- 보안, 성능, 확장성 높음
기본적인 형태
단순히 루트 패키지 아래의 home.html을 보여준다.
@GetMapping(A) A는 url 주소를 의미한다. ex)http://localhost:8080/
return의 문자열은 src/main/resources/templates/ 위치의 html 이름을 말한다.
@GetMapping({"/",""})
public String home() {
// 실질적으로 읽는 위치는 아래와 같다. 환경 설정이 알아서 되어 있어서 되는 거다.
// src/main/resources/templates/home.html
return "home";
}
ModelAndView를 사용한 형태
import org.springframework.web.servlet.ModelAndView;
ModelAndVie의 setViewName을 사용하여 html 정보를 기입한다.
addObject로 key:value 데이터를 html로 보내준다.
// ModelAndView를 통해서 데이터와 함께 어디로 갈지 정해준다.
@GetMapping({"/",""})
public ModelAndView home() {
ModelAndView mav = new ModelAndView();
mav.setViewName("home");
mav.addObject("age", 1);
return mav;
}
매개변수 Model를 사용한 형태
매개변수 Model의 addAttribute를 사용하여 key:value 데이터를 설정한다.
Model 데이터를 return html로 보내준다.
@GetMapping({"/test1"}) // a태그의 href와 일치시키기, 인터넷 주소창에 나오는 주소가 된다.
public String testMethod01(Model model01) {
model01.addAttribute("name", "김철수");
return "test"; // templates 아래에서 해당문자열"test"와 일치하는 html을 조회한다.
}
@GetMapping("/bye")
public String selsectMemberList(Model model) {
Member member = new Member("홍길동", 111);
model.addAttribute("member", member);
return "bye";
}