2023.11.08 - [Framework/Spring] - [스진초5기/Spring] DTO, VO, Entity [스진초5기/Spring] DTO, VO, Entity 스프링 MVC 기반 프로젝트를 하다 보면 DTO, VO, Entity 객체를 만들어서 사용한다. 각 클래스의 멤버변수들이 비슷한 값으로 지정되기 때문에 혼용하여 많이 사용하게 된다. 특히 DTO와 VO는 동일한 jh7722.tistory.com 이전 포스팅에서 DTO, Entity, VO과 각각 어떤 역할을 수행하고 어떤 차이를 있는지 정리했다. 각 역할에 따라 DTO와 Entity는 특정 순간에 변환돼서 사용되어야 한다. 이런 변환작업은 어느 계층에서 처리해 주는 게 가장 좋은 방법일까? DTO, Entity 변환은 어느 계층에서 일..
Framework/Spring
스프링 MVC 기반 프로젝트를 하다 보면 DTO, VO, Entity 객체를 만들어서 사용한다. 각 클래스의 멤버변수들이 비슷한 값으로 지정되기 때문에 혼용하여 많이 사용하게 된다. 특히 DTO와 VO는 동일한 개념으로 사용되는 경우도 많아 이참에 각각의 클래스마다 정의와 특징을 살펴보자. DTO(Data Transfer Object)? DTO는 데이터를 전달하기 위한 객체라고 정의된다. 말 그대로 계층 간의 데이터를 주고받을 때 사용되는 객체라고 생각하면 된다. MVC 관점에서 본다면 View와 Controller 사이, Controller와 Service 사이 등 계층 간 데이터를 주고받을 때 사용된다. DTO의 특징으로는 getter/setter 메소드를 포함하며, 이 외의 비즈니스 로직은 포함하지..
스프링 3 계층을 클래스 화할 때 @Controller, @Repository, @Service, @Component... 등 어노테이션을 선언하여 사용하는데 어노테이션을 지정하는 것만으로도 각 계층에서 서로를 DI 해서 사용할 수 있다. 이 구조를 이해하기 위해선 우선 Spring Bean에 대해 이해할 필요가 있다. Spring Bean? 스프링에서는 DI 컨테이너(혹은 스프링 IoC 컨테이너)에서 관리되는 POJO(Plain Old Java Object)를 Bean이라고 부른다. 이러한 Bean들은 스프링에 의해 생성되고, 라이프 사이클을 수행하고, 의존성 주입을 수행한다. 즉, Bean들은 스프링을 구성하는 중요한 역할을 수행한다. 스프링에서는 이러한 Bean들을 XML, @Bean, @Compo..
저번 과제에서는 레이어드 아키텍처상에서 Controller의 역할에 대해 정리하였는데 이번엔 직접 구현하면서 Controller가 어떻게 사용되는지 알아보도록 하자. 스프링 부트에서는 Controller를 선언하는 어노테이션은 두 가지이다. @Controller @RestController @Controller public class TestController { @GetMapping("/test") public String getTest(){ return "TEST"; } } @RestController public class TestController { @GetMapping("/test") public String getTest(){ return "TEST"; } } 위 코드를 실행시켜 보면 @Co..
2023.10.05 - [Framework/Spring] - [Spring] 레이어드 아키텍처와 스프링의 레이어드 아키텍처 [Spring] 레이어드 아키텍처와 스프링의 레이어드 아키텍처 [스프링부트 핵심 가이드] 책을 기준으로 작성하였습니다. 🍀 레이어드 아키텍처란 애플리케이션의 컴포넌트를 유사 관심사를 기준으로 레이어로 묶어 수평적으로 구성한 구조를 의미한다. 레 jh7722.tistory.com 스프링의 레이어드 아키텍처를 정리한 적이 있는데 이번에는 각 영역에서 중요역할을 담당하는 Controller, Service, Repository에 대해 자세히 알아보자. Controller 컨트롤러는 스프링 레이어드 아키택쳐 중 프레젠테이션 레이어의 포함되어 있다. 클라이언트 요청이 서버 측에 전달될 때 가..
스프링은 자바 기반의 프레임워크이다. 자바의 가장 큰 특징은 객체지향 언어라는 점이다. 그 말인즉슨, 스프링의 가장 큰 특징도 객체지향이다. 자바와 객체지향을 배우지만 순수 자바개발은 생각보다 많이 경험하지 못한다. 그 이유는 결국 그것은 대체해 줄 프레임워크인 스프링이 있기 때문이다. 스프링의 가장 근본이 되는 특징을 말하라고 한다면 IoC, DI 일 것이다. 제어의 역전(IoC) 객체지향 프로그램을 실행하기 위해선 클래스를 선언하고 객체를 생성하여 사용한다. 대표적으로 new 키워드를 활용해 생성한다. 즉, 사용하려는 객체를 선언하고 해당 객체의 의존성을 생성한 후 객체에서 제공하는 기능을 사용한다. 객체가 사용하는 일련의 과정을 개발자가 직접 제어를 한다. 하지만 제어의 역전(IoC)을 특징으로 하..
스프링부트 핵심 가이드 책을 읽고 작성한 내용입니다. 로깅이란? 로깅(logging)은 애플리케이션이 실행하는 동안 발생하는 이벤트, 트랜잭션, 오류 등의 정보를 시간순으로 기록하는 것을 의미한다. 로깅은 개발영역 중 '비기능 요구사항'에 속하지만 디버깅 또는 개발 이후 발생한 이슈를 해결할 때 원인을 분석하는 데 꼭 필요한 요소이다. 이런 로깅을 효과적으로 수행하려면 로그 메서지의 포맷, 로그 레벌, 로그 저장 위치, 보존 기간 등을 적절히 결정하고 관리해야한다. 많은 프로그래밍 언어나 프레임워크에서는 로깅을 지원하는 라이브러리나 도구를 제공하며, 자바 진영에서 가장 많이 사용되는 것이 오늘 정리할 'Logback'이다. Logback 이란? Logback이란 log4j 이후에 출시된 로깅 프레임워크로..
스프링에서 사용되는 대표적인 REST API 명세 도구는 Swagger와 Spring Rest Docs이다. 이 둘 중 Swagger에 대해 알아보자. 우린 API를 개발하면 그것을 명세화하여 관리할 필요가 있다. 여기서 명세란 API가 어떤 로직을 수행하는지 설명하고 이 로직을 수행하기 위해 어떤 값을 요청하고, 이에 따른 응답값으로 무엇을 받을지를 정리한 자료를 의미한다. 이러한 API 명세 작업을 개발 중 변경사항을 지속적으로 업데이트가 필요하다. 이 작업은 매우 번거롭고 시간 소모가 일어난다. 이 같은 문제를 해결하기 위해 등장한 것이 바로 'Swagger'라는 오픈소스 프로젝트이다. Swagger란? 서버로 요청되는 API 리스트를 HTML 화면으로 문서화하여 테스트 할 수 있는 라이브러리이다...
스프링 부트 핵심 가이드 책을 보고 정리한 내용입니다. POST API POST API는 웹 애플리케이션을 통해 데이터베이스 등의 저장소에 리소스를 저장할 때 사용되는 API이다. 웹 API에서 HTTP POST 메서드를 사용하여 요청을 보내며 저장하고자 하는 리소스나 값을 HTTP 바디(body)에 담아 서버에 전달한다. @RequestMapping으로 구현하기 @RequestMapping은 Spring Framework에서 HTTP 요청을 Java 메서드에 매핑하기 위해 사용되는 애노테이션이다. 만약 POST API를 정의하고자 한다면, 아래와 같이 정의할 수 있다. @RequestMapping(value = "/myApi", method = RequestMethod.POST) public Strin..
[스프링 부트 핵심가이드] 책을 참고하여 작성하였습니다. GET API GET API는 웹 애플리케이션 서버에서 값을 가져올 때 사용하는 API이다. GET API를 작성하는 방법은 다양하다. 그 방법의 대해 알아보자. @RequestMapping으로 구현하기 @RequestMapping 어노테이션을 별다른 설정 없이 선언하면 HTTP의 모든 요청을 받는다. 그렇기 때문에 GET형식의 요청만 받기 위해선 어노테이션에 별도 설정이 필요하다. 아래의 코드와 같이 @RequestMapping 어노테이션의 method 요소의 값을 RequestMethod.GET으로 설정하면 GET으로만 설정할 수 있다. package com.core.testproject.controller; import org.springfr..