본문 바로가기

springframework5

Entity, DTO 그리고 VO Entity와 DTO, 그리고 VO는 뭐가 다른 걸까? 학과에서 처음 개발 언어를 학습할 때부터 막연히 사용해 오던 VO(Value Object). 여태까지는 그냥저냥 사용해 왔었다. 회사에서도 객체는 vo로 퉁치고, DTO, Entity는 딱히 사용하는 걸 못 봤기 때문이다. 하지만, 최근 Spring Boot에 대해 학습을 하다 보니 항상 마주하던 녀석들이었다. 그동안 나는 왜 이 녀석들을 제대로 학습하지 않았을까? 1. Entity Entity란, 데이터베이스의 특정 테이블과 1:1로 일치하는 클래스이다. Entity는 테이블에 존재하는 컬럼만을 속성으로 가져야 한다. 상속을 받거나, 구현체가 돼서는 안 된다. 또한, 절대 컨트롤러의 Request/Response에서 사용해선 안된다. - Sprin.. 2023. 3. 15.
03. 멀티 모듈 프로젝트 구성하기 왜 멀티 모듈로 구성할까? 일반적으로 하나의 웹사이트는 여러 가지 기능이 있다. 웬만한 웹사이트를 예시로 들어도, 아래와 같은 항목은 기본적으로 지원한다. 사용자 생성/삭제/수정 게시판 생성/삭제/수정 관리자 관리 이 모든 기능들을 하나의 프로젝트에서 관리한다면 생각만 해도 복잡할 것이다. 기능이 적을 땐 물론 간편하고 쉽게 쉽게 개발할 수 있다. 하지만 서비스의 규모가 커졌을 땐? 뒤늦게 아차! 싶더라도 기존 방식으로 개발할 수밖에 없다. 왜냐고? 당장 서비스의 규모가 급속도로 커지는데 저것들을 리팩토링 하기엔 전혀 기회비용이 맞지 않는다. 하지만 이를 하나의 패키지에서 모두 관리하게 되면 굉장히 복잡할 것이다. 그렇다고 모듈마다 하나의 단일 프로젝트로 따로 만든다면 그것도 리소스가 불필요하게 소모된다.. 2023. 3. 12.
01. Spring Boot 3.0 시작하기 최근 개인사가 바빠 자기계발에 신경쓰지 못했다. Spring 3.0 버전대가 릴리즈됐고, Java17이 나왔지만 써본적도 없다. 그렇다고 마냥 놀았냐고 하면 그건 아니다. 사내 프로젝트로 메신저 기능을 주도해서 개발하고 있고, 플러터로 기존 앱을 마이그레이션하고 있다. 하지만 역시 내 본분은 백엔드로서 스프링 프레임워크를 다루어야한다고 생각했다. 1. 프로젝트 시작하기 먼저, Spring Initializr(https://start.spring.io/)로 프로젝트를 생성한다. 참고로, Spring Framework 3.0 버전대는 Java 17 이상을 사용해야 한다. - 빌드 및 종속성 관리에는 Gradle을 사용할 것으로, Gradle - Groovy를 선택한다. - 언어는 Java를 사용할 것이므로,.. 2023. 3. 12.
제어의 역전 (Inversion Of Control, IoC) 제어의 역전(IoC)이란? 프로그램의 흐름(객체의 생성, 소멸과 같은 생명주기 등)을 개발자(Application)가 직접 제어하는 것이 아니라 외부(프레임워크)에서 제어할 수 있도록 하는 것입니다. 이를 위해 Spring Framework에서는 Application을 구성하는 객체(Bean)를 관리하는 데에 IoC Container를 이용합니다. 이 IoC Container를 이용하여 DI, AOP가 가능해집니다. 💡 DI는 IoC를 구현하기 위한 디자인 패턴 중 하나입니다. 1. IoC의 구현 1-1. 프로그래머가 직접 제어하는 방식 public class SampleController { private Book book; public SampleController() { this.book = new.. 2022. 11. 2.
의존성 주입 (Dependency Injection, DI) 의존성 주입이란? 객체를 직접 생성하는 것이 아니라 외부에서 생성 및 주입하는 방식을 의미합니다. 이를 통해 각 모듈 간의 결합도는 낮아지고, 유연성은 높아지게 됩니다. 1. Spring에서의 의존성 주입 강한 결합 객체 내부에서 다른 객체를 생성하는 구조를 말합니다. A 클래스에서 B 객체를 생성하고, B 객체를 C 객체로 바꾸려면 A 클래스를 수정해야 하기 때문입니다. 느슨한 결합 외부에서 생성된 객체를 인터페이스를 통해 넘겨받는 구조를 말합니다. 이렇게 하면 결합도를 낮추고, 런타임 시 의존 관계가 결정되기 때문에 유연한 구조를 가지게 됩니다. 이 때, SOLID 원칙 중 Open Closed Principle을 지키기 위해 전략 패턴(생성자 주입)을 사용합니다. 여기서 생성자 주입의 종류로는, F.. 2022. 10. 23.