Spring 기초

이도훈·2025년 1월 21일

정적 컨텐츠

스프링에서 정적 컨텐츠는 별도의 서버 로직을 처리하지 않고, 브라우저에서 바로 클라이언트에게 제공할 수 있는 파일(HTML,CSS,JS,..) 을 의미함. 프론트엔드의 파일과 같다고 할 수 있음.
장점

  • 빠르고 간단하게 제공 가능
  • 서버 부하를 줄일 수 있음

단점

  • 동적인 데이터 처리 불가

MVC와 템플릿 엔진

MVC : Model, View, Controller
Model, View, Controller는 소프트웨어 설계 패턴으로, 애플리케이션을 세 가지 역할로 나누어 유지보수성확장성 을 높이는데 중점을 둠.
웹 애플리케이션에서 Spring MVC는 Controller 클래스에서 요청을 받고, Service/Model을 통해 처리하고, View (jsp, thymeleaf)로 응답한다.
또한 MVC 패턴에서 Controller가 프론트엔드에서 오는 JSON 데이터를 받는 역할을 한다.

Model

  • 애플리케이션의 데이터비즈니스 로직을 담당함.
  • 데이터베이스와 상호작용하거나, 데이터를 처리하고 저장하는 역할을 함.

View

  • 사용자에게 데이터를 시각적으로 표현
  • HTML, CSS, JS를 활용해 화면을 구성
  • Model에서 데이터를 받아와 사용자에게 출력
  • 사용자가 데이터를 입력하거나 조작할 수 있는 인터페이스 제공
 <html xmlns:th="http://www.thymeleaf.org">
 <body>
 <p th:text="'hello ' + ${name}">hello! empty</p>
 </body>
 </html>

Controller

  • 사용자의 요청(ex URL호출)을 받아 ModelView를 중재.
  • Model에서 데이터를 가져오거나 저장하는 요청을 처리하고 결과를 View에 전달
@RestController
public class UserController{
	@GetMapping("/hello")
    public String getHello(){
    	return "hello";
    }
}

  • @GetMapping("/hello") : 이 어노테이션은 Spring MVC에서 GET(클라이언트가 서버에 데이터를 요청하는 HTTP 요청 방식) 요청을 특정 메서드와 연결하는 어노테이션이고, localhost:8080/hello로 http통신을 보내면 해당 요청을 처리하는 컨트롤러의 특정 메서드와 매핑하여 실행되도록 한다.

MVC 동작 흐름

  1. 사용자가 Controller에 요청(ex URL 호출)
  2. ControllerModel에 데이터를 요청하고 필요한 로직을 처리.
  3. Model은 요청받은 데이터를 반환.
  4. Controller는 데이터를 View에 전달.
  5. View는 데이터를 시각적으로 사용자에게 출력.

API

API응용 프로그램 간에 상호작용할 수 있도록 정의된 규칙이나 인터페이스.
예를들어, 프로그램의 다른 서비스(구글 지도, 날씨 정보, 축구 데이터) 기능이나 데이터를 활용하려면 API를 사용.

Spring에서 API의 역할

  • 클라이언트의 요청을 받아 데이터를 제공하거나 특정 작업을 수행.
  • 대부분의 APIJSON 형식("key":"value")으로 데이터를 주고받음.

@ResponseBody 애노테이션을 선언하면 ViewResolver(뷰)를 사용하지 않고 바로 데이터를 제공

레이어드 아키텍처

  • 스프링 MVC패턴과 비슷함. 기본적으로 유저가 프레젠테이션 계층으로 요청을 보내고, 프레젠테이션 계층에서 비지니스 계층, 다음으로 데이터접근 계층으로 요청을 보낸다. 데이터 접근 계층에서는 DB로 요청을 보낸다.

Spring 설계

레이어드 아키텍처와 마찬가지로
1. Controller(프레젠테이션 계층)
2. Service(비지니스 계층)
3. Repository(데이터 접근 계층)
으로 나뉜다. 그래서 각각의 패키지로 나눈 후 ServiceRepository interface 를 설계한다.

  • Controller -> Service -> Repository

SpringBoot 환경설정(application.yml)

  • 기본적으로 resources파일에 들어감
  • application.properties (또는 application.yml)은 Spring Boot 애플리케이션이 실행될 때 필요한 각종 설정 값들을 정의하는 것
  • application.yml파일은 application.properties보다 계층적으로 한눈에 보기 쉬움

0개의 댓글