Backend/Spring Boot

JUnit이란?   JUnit은 자바에서 단위 테스트를 작성하고 실행하기 위한 프레임워크이다. Spring Boot에서는 JUnit 5 (JUnit Jupiter)를 사용한다. 먼저 JUnit5에서 자주 사용되는 테스트 검증 라이브러리인 Assertions에 대해서 간단히 알아보고 실제 코드와 함께 테스트 하는 과정을 이어나가보자. JUnit에서 제공하는 다양한 Assertion 메서드를 사용하여 예상 결과와 실제 결과를 비교할 수 있다. 테스트는 생산성을 높이고 애플리케이션의 품질 보장을 위해선 필수적으로 거쳐야 하는 단계이다.    JUnit의 주요 어노테이션들은 크게 @Test : 테스트 메서드 정의@BeforeEach: 각 테스트 메서드 실행 전에 실행될 메서드를 정의한다.@AfterEach: 각..
생성자 주입이라 함은 클래스의 생성자를 통해 필요한 의존성을 외부에서 전달받는 방식이다.객체 간의 결합도를 낮추고 테스트를 용이하게 한다. 생성자 주입의 장점에 대해 알아보고 예시 코드를 통해 생성자 주입을 이해해보자.    생성자 주입의 장점   1. 불변성생성자를 통해 주입된 의존성은 주로 final 키워드로 선언하여 불변성을 보장한다.객체가 생성된 후에는 의존성이 변경되지 않으므로 안전한 코드가 된다.   2. 테스트 용이성테스트 시에 원하는 의존성을 직접 주입할 수 있으므로 Mock 객체나 Fake 객체를 주입하는 방식으로 테스트를 할 수 있다. 실제 DB 대신 메모리 기반의 가짜 저장소를 주입한다던가 그런 식으로 하면 된다.@Testpublic void testServiceWithMockRepo..
이번 시간엔 스프링의 주요 개념인 Bean에 대해 간단히 알아보는 시간을 가져보겠다. 스프링 빈(Spring Bean)은 스프링 프레임워크의 핵심 개념으로, 애플리케이션의 객체를 관리하고 의존성을 주입하는 역할을 한다.     스프링 빈 생성 이유  스프링 컨테이너는 빈을 생성하고, 라이프사이클을 관리하며 필요한 곳에 빈을 주입함으로써 객체 간의 결합도를 낮추고 유지보수성을 높인다.  1. 라이프사이클 관리라는게 뭘까?  예를 들어보자. 데이터베이스 연결이나 파일 I/O와 같은 리소스는 제대로 관리하지 않으면 메모리 누수 등의 문제가 발생할 수 있다. 하지만 스프링 빈 라이프사이클 내에서 자동 관리가 가능하다. 스프링 컨테이너는 애플리케이션 실행 시 필요한 빈을 자동으로 생성하고 초기화와 소멸까지 전부 ..
spring boot를 공부할 때 lombok은 많은 편의를 가져다주는 좋은 툴이라고 할 수 있다. 지금부터 간단하게 lombok에 대해 알아가는 시간을 가져보겠다. lombok 이란? 간단하게 정의하자면 lombok은 자바 개발에서 반복적인 코드 작성을 줄여 개발 생산성을 높이기 위해 사용한다. 개발자들은 객체를 생성해 getter/setter 그리고 toString 메서드를 만든다. 처음엔 개발 초기 단계라 깔끔하게 할 수 있다 하더라도 잦은 수정과 필드명의 변경, 추가에 따라 관리하는 것이 쉽지 않다. 이런 경우에 롬복을 사용하면 자바 클래스를 만들 때 사용되는 getter/setter나 toString 등의 코드들을 @(어노테이션)으로 대체해서 선언하고 java 코드를 만든다. 시..
MVC란? MVC란 Model, View, Controller의 약자이다. Application이 서비스하는 디자인 패턴 중 하나이다. Spring Boot 또한 MVC 디자인 패턴을 사용한다. Model DB와 Controller 사이에서 데이터를 전달하는 역할을 한다.Application이 포함해야 될 데이터가 무엇인지 정의한다.View 또는 Controller에 대한 정보를 알면 안된다. why ? Model이 독립적이고 재사용 가능한 데이터를 담는 역할을 하기 때문에 뷰와 컨트롤러의 구체적인 구현에 의존하지 않도록 하기 위해서이다. Model의 예시 코드package com.example.demo.model;import javax.persistence.Entity; //요..
제목은 뭔가 복잡해 보이지만 사실 매우 간단한 내용이다. 지금 하고 있는 프로젝트가 있는데 동기와 같이 FastAPI를 통한 간단한 웹 페이지를 구현해보았다. FastAPI에서는 uvicorn이라는 ASGI 서버를 사용하여 애플리케이션을 실행할 수 있었다. --reload 옵션을 사용하여 소스 코드 변경을 감지하고 자동으로 서버를 재시작하는 기능을 제공하는 것이다. 개발 중에 코드 변경 사항을 빠르게 반영할 수 있게 해주어 개발자의 생산성을 높이는 데 도움이 되는 기능이었다. 핫 리로드란? 핫 리로드 또는 핫 모듈 리플레이스먼트(HMR)은 개발 도중 애플리케이션의 상태를 유지하면서 코드 변경 사항을 즉시 반영하는 기능이다. 주로 웹 개발, 모바일 웹 개발, 게임 개발 등에서 사용이 되고 개발자의 생산성을..
스프링 부트에 대해 공부하다보면 Maven과 Gradle이 계속 눈에 밟힐 것이다. (아닐 수도 있고) Gradle이 Maven보다 더 최근에 나온 빌드 도구라는 것 말고는 아는 게 없어서 공부하는 김에 포스팅하게 되었다. 이 두 가지 빌드 관리 도구가 어떤 역할을 하는고 어떤 차이가 있는지 비교해보자.    ⚒ 빌드 관리 도구(Build Tool) 빌드 관리 도구란 프로젝트에서 필요한 xml, properties, jar 파일들을 자동으로 인식하여 빌드해주는 도구이다. 소스 코드를 컴파일, 테스트, 정적 분석 등을 하여 실행가능한 앱으로 빌드해준다. 프로젝트 정보 관리또한 해주고 테스트 빌드, 배포 등의 작업까지 진행해준다. 외부 라이브러리를 참조하여 자동으로 다운로드 및 업데이트 관리까지 해주는 역할..
이제부터 클라우드 환경에서 RDS와 EC2를 사용하여 직접 EC2 환경에서 내가 만든 로컬 게시판을 빌드해보겠다. 첫 번째 단계로 내가 만들었던 코드들을 github에 올리는 과정이 필요하다. git을 활용하여 직접 내 계정과 연결하여 코드를 commit하고 push하는 방법도 있지만 IntelliJ에서 쉽게 commit과 push를 하는 방법이 있다. 후자의 방법으로 github에 올려보겠다. 너무 간단하고 편한 방법이다.  이렇게 왼쪽 화면의 두 번째 부분이 commit을 할 수 있는 기능을 수행하는 것인데 여기서 github에 올릴 수 있다. 사진에선 이미 내가 실습으로 올렸기에 바뀐 내용이 없는데 여기서 체크박스를 누른 뒤 commit anyway and push를 하면 gui 상에서 바로 올릴 ..
hskhsmm
'Backend/Spring Boot' 카테고리의 글 목록 (3 Page)