CS
[Spring] DI의 세 가지 방법(필드 주입, 생성자 주입, setter 주입)
먼저 DI에 대해서 다시 한번 짚고 넘어가보자면, DI(Dependency Injection)이란, 어떤 코드에서 필요로 하는 의존성을 외부에서 주입(injection)하는 방법을 말합니다. DI의 목적은 한 코드 내에서 생성과 구현의 책임을 분리하기 위함이고, 이를 통해 런타임 의존성을 갖게 되어 결합도를 낮추고 유연한 코드 설계를 가능하게 해 주는 기법입니다. DI 설명을 위해 예시 코드로 Adder(두 수를 더하는 클래스)를 작성했습니다. DI의 세 가지 방법 - 1. setter 주입 public class Adder { private int number1; private int number2; public void setNumber1(int value){ this.number1 = value; ..
[WEB] REST API - URI 설계 규칙
결국 REST API의 핵심을 정리하자면 다음과 같다. 클라이언트 - 서버 간의 통신 방식 중 하나이다. 자원을 이름으로 구분한다. 자원과 행위를 분리하여 HTTP 메서드로 표현한다. 자원의 상태를 서로 주고 받는다. URI 란? URI(Uniform Resource Identifier)란, 직역하면 "통합 자원 식별자" 이다. Uniform : 자원을 식별하는 통합된 방식 Resource : 웹 브라우저 파일이나 이미지, 기타 리소스(식별 가능한 모든 자원) Identifier : 식별자 즉, URI란 자원을 식별하기 위한 시퀀스이며, 이는 REST에서 자원을 잘 식별하여 처리하기 위해 사용한다. 따라서, 개발자는 URI를 잘 네이밍해야 좋은 API를 만들 수 있고, 이를 위해서는 다음의 URI 설계 ..
[Web] REST API란?
사실 REST API라는 말에 대해서 정말 많이, 그리고 자주 들어 왔지만 정작 REST API를 설명해달라고 하면 뭐부터 이야기해야 할 지 정리가 잘 되지 않았다. 그래서 이번 포스트를 통해 REST API를 차근차근 정리해보려고 한다! 웹의 역사와 REST의 등장 배경 먼저 REST가 등장한 배경을 살펴보기 위해, WEB이 등장한 시점으로 거슬러 올라가자. www의 창시자인 팀 버너스 리는, 인터넷에서 정보를 공유하기 위해 정보들을 하이퍼텍스트(Hypertext)로 연결하자는 아이디어를 제시하였다. 이를 표현하는 형식을 HTML이라고 하며, 정보를 전송하는 방법을 HTTP라 이름짓고 이를 설계하는 작업에 돌입하였다. 해당 작업에 참여한 로이 필딩은 다음과 같은 생각을 한다. WEB의 세계는 너무나도 ..
[Spring] 스프링에서 빈 객체를 등록하는 방법(@Bean, @Component)
https://youwjune.tistory.com/37 [Spring] DI와 IOC에 대해서 스프링을 막 공부하기 시작하는 비기너에게 DI와 IOC에 대한 개념은 너무나도 중요한 것 같습니다! 하지만, 이를 왜 사용할까요? DI와 IOC를 활용하면 어떤 이점이 있을까요? Spring에서는 DI와 IOC가 youwjune.tistory.com 지난번에 DI와 IOC를 공부하며, 자바와 다르게 스프링에서는 객체의 대한 생성부터 소멸까지 모든 관리 책임을 스프링이 갖고(IoC), 필요한 경우 해당 객체를 전달(DI) 한다고 했다. 그렇다면, 스프링은 객체를 대체 어떻게 관리할까? POJO 객체란? 스프링 빈(Bean)이란, 스프링에서 관리하는 자바 POJO 객체라고 말할 수 있다. 사실 이 POJO 객체에..
[WEB] HTTP Method란?
HTTP Method에 대해HTTP Method란? 클라이언트 - 서버 구조에서 요청(request)와 응답(response)가 이루어지는 방식을 의미합니다.서버가 수행해야 할 동작을 지정하여 요청(request)을 보내는 방법이라고 정리할 수 있겠네요. HTTP 메서드는 왜 사용할까요? 결국 리소스와 동작를 분리하기 위함입니다.HTTP METHOD를 통해 서버가 수행해야 할 동작을 지정하면, URI는 리소스만 식별하면 되기 때문이죠. HTTP Method의 종류HTTP Method는 크게 8가지가 있으며, 다음과 같습니다. GET : 리소스를 조회POST : 데이터 추가, 등록PUT : 리소스 대체, 수정 / 해당 리소스가 없으면 새롭게 생성DELETE : 리소스 삭제PATCH : 리소스 부분 변경(수..
[Spring] 비즈니스 로직이란?
비즈니스 로직이란? 우리는 흔히 MVC 패턴에서 Service Layer에 대해서 Business 로직을 처리하는 Layer이라고 정의하곤 한다. 하지만, 우리가 흔히들 말하는 비즈니스 로직이란 대체 무엇일까? 이에 대한 내 주관적인 생각을 적어보고자 한다. Business Logic 우선 내가 생각하는 Business Logic이란, 실제 어떤 프로그램에서 request의 처리나, 특정한 기능 수행을 위해 데이터를 처리하는 실질적인 로직을 뜻한다고 정의할 수 있을 것 같다. 다시 말해, 사용자의 요구사항을 해결하기 위한 실질적인 코드라고 한 문장으로 정의할 수 있다. 실제로 MVC 패턴에서는 비즈니스 로직이 담긴 Layer는 오직 Service Layer로 제한되고 있는데, 사실상 실질적인 데이터의 처..
[Spring] Controller, Service, Repository
Spring에서 프로젝트를 시작하면, 항상 Controller, Service, Repository를 너무 당연하듯 분리하곤 한다. 하지만, 이에 대해 왜 이렇게 분리하는지 생각해 본 적 있는가? 이번 포스트를 통해 Controller, Service, Repository에 차이에 대해 명확히 알아가는 시간을 가져 보려고 한다. MVC 패턴이란? MVC 패턴이란, 사용자 인터페이스로부터 비즈니스 로직을 분리하여, View - Controller - Model의 3가지로 분류하는 패턴이다. 그렇다면, MVC 패턴은 왜 등장했을까? MVC 패턴이 등장하기 이전에, Spring 에서는 JSP를 사용하곤 했었다. 이는 Controller 영역에 View 영역을 같이 구현하는 방식이며, 사용자의 요청을 JSP가 ..
[Spring] Entity, DTO, VO 무슨 차이야?
앞서 DDD에 대한 포스트를 작성하며 Domain에 대해서도 살펴보게 되었다. 최근에 Domain이랑 Entity에 대한 차이가 무엇이냐는 질문을 받았는데, 나는 여태껏 거의 동일한 개념이라고 생각해 왔다. 저번 포스트에 이어 이번 포스트에는 Entity가 무엇인지 정리하고, 많은 사람들이 혼용하는 DTO와 VO에 대해서도 함께 정리하려고 한다. Entity란? Entity 클래스는 실제 DB의 Relation과 1:1로 매핑되는 클래스로, DB Relation 내에 존재하는 attribute만 속성(필드)로 가져야 하는 것이 특징이다. Domain Logic만을 가지고, Presentation Logic(View)를 가져서는 안된다. 가급적 외부에서는 Entity 클래스의 필드에 직접적으로 접근하지 않..