기록을 합시다.
[Spring] Spring Framework 기본 본문
Spring Framework
Spring Framework는 Java기반의 오픈소스 애플리케이션 프레임워크다. Spring Framework의 핵심 기능은 IoC(Inversion of Control)과 AOP(Aspect Oriented Programming)이다. IoC는 제어권을 개발자가 아닌 프레임워크가 가지게 하고, AOP는 흩어진 코드를 모아 코드의 재사용성 및 유지 보수성을 높여준다.
Spring Framework의 주요 특징은 아래와 같다.
- 경량화 : Spring Framework는 경량화 되어 있어서 매우 가벼우며, 다른 애플리케이션 서버와 연동 가능하다.
- 의존성 주입 : 객체간 의존성을 코드 내부가 아닌 외부엣 설정 가능하다.
- 제어 반전 : 프레임워크가 객체를 생성하고 관리한다.
- 관 점 지향 프로그래밍 : 모듈화하여 코드의 재사용성과 유지보수성을 높인다.
MVC Design Pattern
MVC 디자인 패턴은 사용자 인터페이스를 구성하는 요소들을 모델, 뷰, 컨트롤러 세 가지 역할로 구분하여 설계하는 방법이다. MVC 패턴은 역할이 분리되어있기 때문에 유지보수,확장성이 좋으며 생산성을 높일 수 있다.
- Model : Model은 데이터와 비즈니스 로직을 담당한다. 데이터베이스나 파일, 외부 API 등에서 데이터를 가져오고 처리하는 일을 수행한다.
- View : View는 사용자 인터페이스를 담당한다. 모델의 데이터를 이용하여 사용자가 볼 수 있는 형태로 렌더링 하며, HTML,CSS, javascript 등의 프론트엔드 도구들을 이용해 구현한다.
- Controller : Controller는 Model과 View를 연결하며, HTTP 요청을 처리하는 일을 수행한다. 요청에 따라 모델을 호출하기도 하고, 받은 데이터를 모델에게 전달하기도 한다. 또한, 데이터의 유효성 검사 등의 비즈니스 로직을 처리하기도 한다.
추가로, MVC 패턴을 기반으로 한 Spring Framework에서는 컨트롤러, 서비스 DAO 등의 구성 요소들을 자바 클래스로 구현하고, 이를 관리하기 위해 스프링의 IoC 컨테이너에 등록한다. 이 때, @Component, @Service, @Repository, @Controller 등의 애노테이션을 사용하여 각 구성 요소들을 식별하고, 스프링의 IoC 컨테이너에서 관리하게 된다.
Spring Framework MVC 프로젝트 폴더 구조
- src/main/java:자바 소스코드 폴더
- src/main/resources: 자원 파일 폴더 : XML, Properties 등의 자원 파일이 위치
- src/main/webapp: 웹 자원 폴더 : 웹 애플리케이션 리소스(HTML, CSS, Javascript)가 위치
- pom.xml: Maven 프로젝트 설정 파일 :프로젝트에 필요한 라이브러리, 플러그인 등이 정의된다.
- WEB-INF/web.xml: Web.xml 파일 : 웹 애플리케이션 구성 파일로, Servlet들이 등록되어있다.
- WEB-INF/spring/: 스프링 설정 파일 폴더 : 스프링 설정 파일들이 위치함
- WEB-INF/views/: 뷰 폴더 : View파일(JSP, Thymeleaf 등)이 위치해있다.
JSP(JavaServer Pages)
JSP는 동적인 웹 페이지 생성을 위한 도구이다. JSP는 서버 측에서 동적으로 생성된 콘텐츠를 제공한다. JSP는 HTML 문서 내에 자바 코드를 포함시킬 수 있고, 이를 통해 서버 측에서 데이터 처리 및 동적 콘텐츠를 생성해준다. JSP 파일은 서블릿(java)으로 변환되어 실행된다. JSP 파일은 Template Engine을 내장하고 있지 않다. 그리하여 JSP에서는 주로, JSTL과 EL을 사용하여 동적으로 데이터를 출력하고, 필요한 경우 JSP 태그를 활용하여 페이지를 구성한다. 참고로 JSTL과 EL은 템플릿 엔진이 아니다.
EL(Expression Language)
JSP에서 사용되는 언어로, JSP 페이지에서 Java 코드 대신에 EL 표현식을 사용하여 데이터나 변수를 출력하거나 연산을 수행할 수 있도록 지원하는 기술이다. EL은 JSP의 일뷔다.
JSTL(JSP Standard Tag Library)
JSTL은 JSP 페이지에서 자주 사용하는 로직 및 UI 작업을 간단하게 처리하기 위한 태그 라이브러리이다. 이를 사용하여 반벅적으로 사용되는 코드를 태그 형태로 제공하여 개발 생산성을 높여준다.
Template Engine
Template Engine은 템플릿 파일과 데이터를 결합하여 HTML, XML, JSON 등의 문서를 생성하는 도구이다. 웹 개발에서 템프릸 엔진은 서버 측에서 동적으로 HTML을 생성하는 데 사용된다. 일반적으로 템플릿 엔진은 템플릿 파일 및 데이터를 이용해 HTML 문서를 동적으로 생성하는 방법을 제공한다. 템플릿 엔진의 종류로는 Mustache, Thmeleaf, Jinja등이 있으며, 변수, 조건문, 반복문 등의 문법을 이용하여 서버에서 데이터를 가져와 HTML 문서를 생성한다.
Thymeleaf
Thymeleaf는 Template Engine의 일종이다. Thymeleaf는 Java의 서버 사이드 템플릿 엔진으로, HTML, XML, Javascript, CSS 등의 다양한 마크업 언어를 지원한다. HTML 페이지를 구성하는 동적인 내용을 자바 코드로 구현하여 전체 HTML 페이지를 구성하는 방식으로 사용된다. Spring Framework에서는 Thymeleaf와 같은 템플릿 엔진을 사용하여 JSP 대신에 VIew를 생성하는 것이 가능하다.
'공부 > Java' 카테고리의 다른 글
[Spring] IntelliJ에서 Auto-Reloading 하기 (0) | 2023.05.13 |
---|---|
[Spring] Spring Framework에서 Form 받아오기 (0) | 2023.04.27 |
[Spring] DAO, DTO, VO (0) | 2023.04.27 |
[Spring] 여러 File Upload 하고, 저장하기 (0) | 2023.04.27 |
[Spring] Windows11 스프링 프레임워크 기본 세팅하기 (0) | 2023.04.26 |