1. 스프링 프레임워크 이해하기
스프링을 사용하기 위해서 우선 스프링 프레임워크의 특징을 알아봐보자.
1) 유연성
스프링은 확장성이 높다. 스프링 프레임워크에 통합하기 위해 간단하게 기존 라이브러리를 감싸는 정도로 스프링에서 사용이 가능하기 때문에 수많은 라이브러리가 이미 스프링에서 지원되고 있고 스프링에서 사용되는 라이브러리를 별도로 분리하기도 용이하다.
또한 스프링은 Plain Old Java Object 방식의 프레임워크이다. 일반적인 J2EE 프레임워크에 비해 구현을 위해 특정한 인터페이스를 구현하거나 상속을 받을 필요가 없어 기존에 존재하는 라이브러리 등을 지원하기에 용이하고 객체가 가볍다.
2) JDBC와 JPA
스프링은 데이터베이스에 접속하고 자료를 저장 및 읽어오기 위한 여러 가지 유명한 라이브러리, 즉 JDBC, iBATIS(MyBatis), 하이버네이트 등에 대한 지원 기능을 제공하여 데이터베이스 프로그래밍을 쉽게 사용할 수 있다.
3) 의존성 주입(DI; Dependency Injection)
각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결시켜준다.
4) 제어 역전(IOC; Inversion of Control)
컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어서 필요에 따라 스프링에서 사용자의 코드를 호출한다.
5) 관점 지향 프로그래밍(AOP)
트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리할 수 있다.
2. Spring Boot Project의 이해
우리가 스프링 프레임 워크에서는 스프링 부트 프로젝트를 통해 작업을 할 예정이다.
여기서 기존의 자바에서 사용했던 자바 프로젝트나 다이나믹 웹 프로젝트와의 차이점을 알아보자.
- Java Project : .java
- Dynamic Web Project : .java / .jsp / .html / .css / .js ~~
- Maven Project : pom.xml
Gradle Project
- Spring Boot Project : Dynamic Web Project + Maven Project(New Version)
- Spring Legacy Project : Dynamic Web Project + Maven Project(Old Version)
1) Spring Boot의 특징
- Spring Legacy Project에 비해서 설정이 간소화됨
- WAS(Tomcat)가 포함되어 있어서 서버 설정이 간소화됨(기존에 실행중인 톰캣은 중지시키고 실행시켜야 함)
- Spring Boot Application에서는 JSP대신 template을 사용하는 것을 권장하고 있음.
- 스프링 MVC와의 통합 모듈을 제공하며, 애플리케이션에서 JSP로 만든 기능들을 완전히 대체할 수 있음
2) Maven과 Gradle의 차이
- 스프링 부트 프로젝트를 생성할 때 빌드 툴
① Maven 프로젝트
내가 사용할 라이브러리 뿐만 아니라 해당 라이브러리가 작동하는데 필요한
다른 라이브러리들까지 관리하여 네트워크를 통해 자동으로 다운 받아준다.
외부저장소에서 필요한 라이브러리와 플러그인들을 다운로드 한다음, 로컬시스템의 캐시에 모두 저장한다.
POM(Project Object Model) : pom.xml파일을 말하며 Maven의 기능을 이용하기 위해 POM이 사용된다.
┌─src/main/java
├─src/main/resources
│ ├─static 자바스크립트, CSS, 이미지등 정적인 요소
│ ├─templates 뷰페이지
│ └─application.properties 환경설정(포트번호, DB연결등)
├─Maven Dependencies
├─src
├─target
└─pom.xml
② Gradle 프로젝트
기본적으로 빌드 배포 도구(Build Tool)이다
┌─src/main/java
├─src/main/resources
│ ├─static
│ ├─templates
│ └─application.properties
├─Project and External Dependencies
├─bin
├─gradle
├─src
├─build.gradle 라이브러리 의존성, 플러그인, 라이브러리 저장소 설정. Maven pom.xml역할
├─gradlew 리눅스 또는 맥OS용 실행 쉘 스크립트 파일
├─gradlew.bat 윈도우용 실행 배치 스크립트 파일
└─settings.gradle 프로젝트 구성 정보 파일
3) 웹 템플릿 엔진(Web Template Engine)
- 웹문서가 출력되는 엔진이며, 동적 컨텐츠를 생성하는 방법이다.
- View만 만드는데 사용하는 것이 아니며, 여러 가지 용도(code generation, email 등)로 사용할 수 있지만
주로 사용하는 기능이 View를 만드는 것이다.
- 스프링 부트가 자동 설정을 지원하는 템플릿 엔진이 4가지(FreeMarker, Groovy, Thymeleaf, Mustache, JSP)가 있다
'⁂ Spring FrameWork > : 기본 익히기(Boot 기반)' 카테고리의 다른 글
[Spring] #6 View와 Controller 연습하기(MVC 중 VC) (0) | 2022.11.01 |
---|---|
[Spring] #5 어노테이션과 스프링 컨테이너(+ 내장형 톰캣 환경설정하기) (0) | 2022.10.31 |
[Spring] #4 pom.xml 뜯어보기 (0) | 2022.10.31 |
[Spring] #3 프로젝트 만들기(Maven) (0) | 2022.10.31 |
[Spring] #1 STS 설치하기 : 스프링 프레임워크(Spring FrameWork) 환경구축하기 (0) | 2022.10.28 |