본문 바로가기

Backend

(37)
스프링의 콘셉트(IoC, DI, AOP, PSA) 쉽게 이해하기 ❕ 들어가며 이번 글에서는 스프링의 중요한 콘셉트인 IoC(제어의 역전), DI(의존성 주입), AOP(관점 지향 프로그래밍), PSA(이식 가능한 서비스 추상화)에 대해 알아보겠습니다. 💡 이 글을 읽게 됨으로써 얻을 수 있는 지식은 아래와 같습니다. - IoC(제어의 역전)이 무엇인지 - DI(의존성 주입)이 무엇인지 - 스프링 컨테이너와 빈이 무엇인지 - AOP(관점 지향 프로그래밍)이 무엇인지 - PSA(이식 가능한 서비스 추상화)이 무엇인지 위 네 개념을 쉽게 이해하고 싶어하시는 분들에게 도움이 되고자 스프링 부트 3 백엔드 개발자 되기 - 자바 편의 일부 내용을 공개하기로 했습니다. 이 내용은 책의 2.2장을 거의 그대로 옮겨온 내용으로, 많은 도움이 되었으면 좋겠습니다. 🙏 🔍 IoC와 DI..
Rails Console 사용하기 🤔 Rails Console? Rails Console은 Rails 애플리케이션의 코드 스니펫을 실행해볼 수 있는 커맨드 라인 프로그램입니다. Rails Console을 통해 데이터를 조회하거나, 특정 로직을 실행해볼 수도 있고, 스크립트를 짤 수도 있습니다. Ruby 언어와 Rails 환경을 지원해주기 때문에 간편하게 사용할 수 있습니다. 🚀 사용법 시작하기 $ rails console $ rails c # 환경이 있다면 $ rails c -e test 위 커맨드를 입력하게 되면 irb를 레일즈 의존성을 포함해서 띄우게 됩니다. 만약 profile이 분리된 상태면 -e를 통해 환경을 지정해줄 수도 있습니다. # 실행 결과 irb(main):001:0> 사용하기 실행이 완료되면 원하는 코드 스니펫을 넣어..
Rails FactoryBot 알아보기 🤖 FactoryBot이란 무엇일까요? 팩토리봇을 사용하면 모델에 대한 더미 데이터를 만들 수 있습니다. 저는 주로 spec 테스트를 할 때 더미데이터를 넣기 위해 FactoryBot을 유용하게 사용하고 있습니다. 🎉 설치 방법 gem "factory_bot_rails" 이후에 RSpec을 사용한다면 아래와 같이 설정해줍니다. RSpec.configure do |config| config.include FactoryBot::Syntax::Methods end 👀 'Factory'에 대한 정의 각각의 Factory는 이름과 속성들로 구분됩니다. 여기서 '이름'은 객체를 추측하는데 사용됩니다. 아래 예시에서 이름은 user, 속성은 first_name, last_name, admin이 됩니다. # 이건 유저..
Spring Boot에서 JWT 사용하기 🔐 들어가며 안녕하세요! 이번 포스팅에서는 JWT에 대한 간단한 설명과, Spring Boot에서는 JWT를 어떻게 사용하는지 소개해드리려고 합니다. 전체 코드는 Github에서 확인이 가능합니다. 📚 사전준비 1. 서버 기반 인증 vs 토큰 기반 인증 특정 사용자가 서버에 접근을 했을 때, 이 사용자가 인증된 사용자인지 구분하기 위해서는 여러 방법을 사용할 수 있는데요. 대표적인 방법으로는 서버 기반 인증 토큰 기반 인증 위 2가지 방법으로 나눌 수 있습니다. 위 방법들은 각각의 장, 단점이 존재하기 때문에 상황에 맞게 적절한 방법을 선택해야합니다. 그 중 JWT는 '토큰 기반 인증'에 해당하는 방법입니다. 토큰을 사용한다는 것은 요청과 응답에 토큰을 함께 보내 이 사용자가 유효한 사용자인지를 검색하는..
JUnit5의 기본적인 사용법들 🔐 JUnit5란? 세 가지 모듈(JUnit Platform + JUnit Jupiter + JUnit Vintage)로 구성된 테스트 라이브러리로, Java 8 이상부터 제공합니다. JUit Platform JVM에서 테스트를 하기 위한 기반 역할을 한다. 테스트 프레임 워크를 개발하기위한 API를 정의한다. JUnit4 기반 실행 환경을 제공한다. JUnit Jupiter JUnit5에서 새롭게 탄생한 프로그래밍 모델과 확장 모델의 조합이다. Jupiter 기반 테스트를 실해앟기 위한 TestEngine을 제공한다. JUnit Vintage JUnit3, JUnit4 기반 테스트를 실행하기위한 TestEngine을 제공한다. 💛 사용해보기 모든 예제는 공식 문서에 있는 예제들을 기반으로 작성되었습니다..
JUnit4에서 JUnitParams 이용해서 파라미터 테스트하기 🔐 들어가며 안녕하세요! 이번 포스팅에서는 JUnit4에서 사용할 수 있는 JUnitParams에 대해 소개해드리려고 합니다. // 만약 위 세 개의 테스트를 하나의 테스트로 돌릴 수 있다면? @Test public void positiveTest1() { Positive positive = new Positive(1); assertThat(positive.isPositive()).isEqualTo(true); } @Test public void positiveTest2() { Positive positive = new Positive(5); assertThat(positive.isPositive()).isEqualTo(true); } @Test public void positiveTest3() { Po..
단위 테스트에 Spring Securiy 인증 관련 어노테이션들 사용하기 🔐 들어가며 안녕하세요! 이번 포스팅에서는 테스트할 때 Spring Security 인증을 할 수 있게 제공되는 어노테이션들을 소개하려고 합니다. 이 포스팅에서 다루는 어노테이션 목록은 다음과 같습니다. @WithMockUser : UserDetail 생성 @WithAnonymousUser : 익명의 유저 생성 @WithUserDetails : UserDetail 조회 👻 의존성 추가 testCompile('org.springframework.security:spring-security-test') testCompile("org.springframework.boot:spring-boot-starter-test") 위 어노테이션들을 사용하기 위해 반드시 필요한 spring security test와, JU..
Spring Boot에서 Custom Valid Annotation 만들기 안녕하세요! 이번 포스팅에서는 Spring Boot에서 Custom Valid Annotation를 적용하는 방법에 대해 알아보겠습니다. 전체 코드는 Github에서 확인이 가능합니다. ✍️ 스프링에서 제공되는 Valid 관련 어노테이션을은 많지만, 가끔 제공해주지 않는 어노테이션을 Valid 처리하고 싶을 때가 있습니다. 예를 들어, Request 받을 때 전화번호 포맷을 확인하고 싶은데, 이와 관련된 Valid 어노테이션은 없습니다. 그렇다면 아래와 같이 구현해야하는 상황이 생기게 됩니다. public class Obj { @NotBlank private String tel; } @RestController public class ValidController { @PostMapping("/valid"..