전체 글 71

Spring의 어노테이션에 대해 알아보자🍀

오늘은 스프링의 IoC와 DI 개념을 활용하여 3가지의 어노테이션의 의미를 알아보려고 한다. 우선 스프링의 기본 개념 4가지에 대해 복습을 해보면1. IoC: 제어의 역전. 객체에 대한 제어권을 스프링이 가져가는 것.2. DI: 의존성 주입. 개발자가 사용하고자 하는 객체를 스프링이 주는 것.3. 스프링 빈: 스프링이 관리하고자 하는 객체들4. 컨테이너: 스프링 빈이 담겨있는 일종의 공간. 스프링 빈 객체들을 모아놓고 쉽게 관리할 수 있다. 이제 간단히 복습도 했으니 어노테이션을 간단하게 알아보자! @Component@Component는 객체에 대한 제어권을 넘기는 것을 의미한다.  예시 코드로 더 자세히 알아보자.@Componentpublic class House { public House() {..

백엔드/Spring 2024.07.17

스프링의 주요 개념 4가지

스프링에서 가장 중요한 개념 4가지에 대해서 정리해보려고 한다.이 4가지는 IoC, DI, 컨테이너, 스프링 빈이다.하나씩 차례대로 알아보겠다! IoCIoC는 Inversion Of Control의 줄임말이고, 한국어로 번역하면 '제어의 역전'이다.제어의 역전..? 이렇게 보면 무슨 말인지 감이 오지 않아서 다르게 생각해보겠다. 우선 Inversion이 의미하는 역전은 'A가 B를 역전하다.' 라는 의미가 아니다.여기서 Inversiondms '180도 상황을 바꾸는 것' 즉, On/Off 상황을 의미한다.그리고 여기서 Control은 어떤 것을 제어한다는 것일까?Java, Spring에서 말하는 제어는 당연히 '객체'를 제어하는 것을 의미한다.이 두 의미를 합쳐서 생각해보면 '객체를 제어하는 상황을 1..

백엔드/Spring 2024.07.16

SOLID

오늘은 객체지향 5원칙인 SOLID에 대해서 정리해보겠다.객체? 객체 지향?생각해보면 객체를 지향한다는 것이 무슨 의미인 것인지 명확하게 정의하지 못하고 있었던 것 같다.단순히 "최대한으로 쪼개서 관리하는 것"으로 알고 있었고, 또 그렇게 써왔다.이번 게시물을 작성하면서 SOLID원칙에 대해서 알아봄과 동시에 객체 지향 마스터가 되어보자! SRP(Single Responsibility Principle) 단일 책임원칙은 클래스를 수정을 해야할 때 목적이 하나여야 한다는 의미이다.  다른 말로 클래스는 하나의 책임만 가지고 있어야 한다.예를 들어 청소기가 청소도 하고, 화분에 물을 주고, 음식을 만들어주는 기능까지 할 필요가 없는것이다.청소기는 청소만 수행하는 책임을 가지면 된다.Example아래 코드를 ..

백엔드/Java 2024.07.16

[우아한 남매들] 배달의 만족 KPT 회고

민족...인 줄 알았겠지만 우리팀, 우아한 남매들은 배달의 "만족" 서비스를 만드는 프로젝트를 진행했다.우아한 형제들의 배달의 민족 서비스를 레퍼런스로 하여 배달 서비스를 Java로 구현해보는 프로젝트였다.이 프로젝트에서 우리가 핵심으로 둔 것은 세가지였다.1. MVC 패턴 적용2. 클린코드3. Java의 객체 지향성 최대 활용 우리는 DDD 개발을 위해 도메인을 먼저 나눴다.우리에게는 시간이 4일밖에 없었기 때문에 최소한의 기능만 구현하기로 했다. User, Store, Menu, Order 이렇게 4개의 도메인으로 나누고 각 도메인 별로 패키지를 생성했다.그리고 각 패키지 안에 MVC 패턴에 맞는 클래스들을 생성했다.그래서 나온 우리의 패키지 및 클래스 구조는 아래와 같이 나왔다.user|- User..

백엔드/Java 2024.07.15

애자일 vs 폭포수 모델

오늘 개발자들과 소프트웨어 개발론에 대해 이야기했다. 애자일 방법론이 더 좋은가? 폭포수 모델이 더 좋은가? 어떤 방법론을 더 선호하는가? 내 의견은 애자일 방법론이 더 좋다! 였다.사실 원래는 폭포수 모델을 더 선호했다.폭포수 모델을 채택했던 회사에서 인턴 근무를 해서 그런지 폭포수 모델이 더 익숙하기도 하고 개발 진행 상황을 파악하고 정리하기 편하다고 생각했다.특히, 나는 계획과 문서화를 매우 좋아하는 사람으로써... 폭포수 모델과 같은 명확한 단계가 있는 방법론이 더 좋았다. 그런데 직접 프로젝트에 참여하여 개발을 하면서 생각이 많이 바뀌었다.스터디 관리 앱 Modi 프로젝트에서 처음에는 폭포수 모델로 시작했다.PM이 기획을 하고, 그 다음으로 디자이너가 디자인, 개발자가 그 다음으로 개발을 진행하..

개발 공부 2024.07.11

왜 내 주력언어는 JAVA일까?

나는 Python으로 프로그래밍에 입문했다.그 이후에 C, Java를 차례로 배웠는데 Java를 배운 이후로는 쭉 Java를 주력언어로 써왔다. 내가 Java를 처음 배웠을 때의 느낌은 한 마디로 "되게 복잡한 것 같은데 알고 나니 엄청 체계적이네?" 였다. Python에서는 print(a); 로 끝날 것을 Java에서는 System.out.println(a); 로 써야하기에 처음에는 굉장히 복잡하다고 여겼다. 그런데 Java로 개발을 시작하면서부터는 계속해서 Java를 썼다.이것에는 백엔드 개발을 Springboot로 시작했다는 것도 큰 비중을 차지할 듯 싶다. Java로 개발을 하면서 가장 좋았던 점은 "객체지향"이었다.객체지향으로 개발을 하면서 뭔가 체계가 잡혀있다는 느낌이 계속 들었다. 디자인패턴..

백엔드/Java 2024.07.10

탁구 게임 KPT 회고

나는 이전에 Springboot로 탁구 서비스 백엔드 로직을 구현해본 적이 있다. https://github.com/Leehyeonju0219/pingpong-game GitHub - Leehyeonju0219/pingpong-game: 탁구 게임 서비스의 백엔드 로직을 구현한 코드입니다.탁구 게임 서비스의 백엔드 로직을 구현한 코드입니다. Contribute to Leehyeonju0219/pingpong-game development by creating an account on GitHub.github.com 나는 이 프로젝트 코드를 리팩토링 해보고자 한다.이 프로젝트 당시 급하게 코드를 짜느라 클린코드를 생각하지 못했다.. 물론 변명일 뿐... 반성한다.... 이 당시에 Swagger api를 연..

백엔드/Java 2024.07.10

비밀번호를 변경할 때, REST API 중에 PUT을 쓸까, PATCH를 쓸까?

비밀번호를 변경할 때는 PUT을 쓸까, PATCH를 쓸까? 요즘 비밀번호를 변경하는 트렌드를 좀 살펴보자. 2가지의 사례를 서치해봤는데, 보면 회원 정보 수정하기 페이지로 가지 않고 비밀번호 변경 페이지가 따로 켜지면서 딱 비밀번호만 변경하게 하고 있다.이런 것을 보면 "어! 회원 정보 중에 비밀번호만 변경하고 있네? PATCH 쓰고 있구나!"라고 생각하기 쉽다.내가 그랬다.... 그런데 사실 그렇지 않은 경우가 많다!즉, PATCH가 아니라 PUT을 쓰는 경우가 많다는 뜻이다. 그러면 다들 이런 의문을 가질 것이다.PUT은 전체를 변경하는 것이고, PATCH는 일부를 변경하는 것이니까 당연히 PATCH를 쓰고 있는거 아니야?  여기서 우리는 요즘 사용자 ERD를 생각해볼 필요가 있다.우리가 일반적으로 ..

백엔드/Java 2024.07.05

오버라이딩(Override)

상속은 부모가 가진 것을 물려받아 그대로 사용하거나 추가하여 사용할 수 있는 것이다."추가"에 포커싱을 해서 오버라이딩에 대해 살펴보자. 아래 코드는 Phone이라는 클래스이다. 이 클래스를 살펴보면 printLogo()라는 메소드가 있는 것을 확인할 수 있다. public class Phone { // 필드 private String brand; // 메소드 void printLogo() { if (this.brand == "Samsung") { System.out.println("*** " + brand + " ***"); } else { System.out.println("@@@ " + brand + " @@@")..

백엔드/Java 2024.07.04

React는 라이브러리? 프레임워크?

라이브러리는 단어 그대로를 보면 '도서관'이라는 뜻이다.도서관은 원하는 책을 찾고 그 책을 빌려서 읽을 수 있게 해준다.프로그래밍에서의 라이브러리도 현실 세계의 도서관과 비슷한 역할을 한다. 라이브러리는 어떤 개발자가 작성한 코드를 다른 사람들도 사용할 수 있게 만든 형태인 것이다.이 라이브러리를 사용하고 싶은 사람들은 해당 코드를 import하여 사용할 수 있는데, 코드 전체가 아닌 일부만 사용할 수도 있다.즉, 쉽게 말해 내 입맛대로 빌려쓸 수 있는 것이다.   그렇다면 프레임워크는 무엇일까?프레임워크를 '프레임' + '워크'로 나눠보자. 즉, 틀 안에서 일하는 것이다.프레임워크는 특정 서비스를 완성하기 위해 필요한 모든 기술이 틀 안에 있는 것이다. 따라서 이 프레임워크만 있으면 굳이 다른 라이브러..

반응형