2024/08 21

IoC (제어의 역전) 이해하기

1. IoC(제어의 역전)란?IoC(Inversion of Control, 제어의 역전)는 소프트웨어 디자인 원칙 중 하나다. 제어의 역전이란, 프로그램의 흐름 제어 권한을 개발자가 아닌 프레임워크나 외부 컨테이너가 담당하는 것을 말한다.2. IoC의 기본 원리IoC의 핵심 원리는 의존성 주입(Dependency Injection)이다. 의존성 주입이란, 객체가 자신이 필요한 다른 객체를 직접 생성하는 대신 외부에서 주입받는 방식이다. 이로 인해 객체 간 결합도가 낮아지고, 유연성과 재사용성이 높아진다.(DI 관련 글 : https://jki09871.tistory.com/55) 3. IoC의 예시3.1 전통적인 방식class Engine { public void start() { Sy..

SPRING&BOOT 2024.08.13

의존성 주입 (DI, Dependency Injection) 이해하기

**의존성 주입 (Dependency Injection, DI)**은 소프트웨어 개발에서 객체 간의 의존성을 관리하는 방법 중 하나다. 스프링 프레임워크와 같은 현대적인 프레임워크에서는 DI를 통해 객체의 생성과 의존성 관리를 자동으로 처리할 수 있다.DI란 무엇인가?DI는 객체가 필요로 하는 다른 객체(종속성)를 외부에서 주입해주는 패턴이다. 객체가 스스로 종속성을 생성하지 않고, 외부에서 제공받기 때문에 코드의 결합도를 줄이고 유연성을 높인다.DI의 주요 개념1. 의존성 (Dependency)의존성은 객체가 동작하기 위해 필요한 다른 객체를 의미한다. 예를 들어, OrderService가 OrderRepository를 필요로 하는 경우, OrderRepository가 의존성이다.2. 주입 (Injec..

SPRING&BOOT 2024.08.13

3 Layer Architecture

스프링 프레임워크를 사용할 때, 3 Layer Architecture를 적용하면 애플리케이션의 구조가 더 명확하고 유지보수하기 쉬워진다. 이 아키텍처는 애플리케이션을 세 가지 주요 계층으로 나눈다:프레젠테이션 계층 (Presentation Layer)비즈니스 로직 계층 (Business Logic Layer)데이터 계층 (Data Layer)각 계층의 역할1. 프레젠테이션 계층 (Presentation Layer)사용자와 애플리케이션 간의 인터페이스를 담당. 스프링에서는 컨트롤러(Controller)를 통해 구현된다. 사용자 요청을 처리하고, 비즈니스 로직 계층과 상호작용하여 필요한 데이터를 모델에 담아 뷰(View)에 전달한다.스프링 애너테이션: @Controller, @RestController예시:..

SPRING&BOOT 2024.08.12

MVC 디자인 패턴

MVC 디자인 패턴: 입문자를 위한 안내서MVC란 무엇인가요?MVC는 Model-View-Controller의 약자로, 소프트웨어 개발에서 자주 사용되는 디자인 패턴입니다. 이 패턴은 애플리케이션을 세 가지 주요 구성 요소로 나누어, 각 구성 요소가 특정 역할을 맡도록 설계됩니다. 이렇게 나누는 이유는 코드의 구조를 명확히 하고 유지보수를 쉽게 하기 위함입니다.1. Model (모델)모델은 애플리케이션의 데이터와 그 데이터에 대한 로직을 담당합니다. 예를 들어, 사용자의 정보를 저장하거나 데이터베이스와 상호작용하는 작업이 모델의 역할입니다. 모델은 애플리케이션의 상태를 표현하며, 뷰와 컨트롤러로부터 독립적으로 동작합니다.역할데이터 처리비즈니스 로직 구현데이터베이스와 상호작용2. View (뷰)뷰는 사용자..

SPRING&BOOT 2024.08.09

그레이들(Gradle)이란?

스프링(Spring) 프레임워크로 개발을 시작하게 되면, 많은 새로운 도구와 개념들을 접하게 됩니다. 그 중에서도 **그레이들(Gradle)**이라는 도구는 개발 과정에서 자주 사용되는 중요한 도구 중 하나입니다. 이 글에서는 그레이들이 무엇인지, 그리고 스프링 프로젝트에서 어떻게 활용하는지 쉽게 설명해드리겠습니다.1. 그레이들이란 무엇일까?**그레이들(Gradle)**은 여러분이 작성한 코드를 자동으로 처리해주는 빌드 자동화 도구입니다. 예를 들어, 여러분이 코드를 작성한 후에는 컴퓨터가 이해할 수 있는 형태로 변환(컴파일)하고, 테스트하고, 실제로 작동 가능한 프로그램으로 만들어야 합니다. 그레이들은 이 모든 과정을 자동으로 처리해주기 때문에, 개발자는 복잡한 과정을 일일이 신경 쓰지 않아도 됩니다...

SPRING&BOOT 2024.08.09

KPT 회고

Keep - 현재 만족하고 있는 부분문제 해결의 협력: 팀이 직면한 문제를 함께 해결하려는 태도가 매우 좋았습니다. 서로의 의견을 존중하며 문제를 해결하는 과정에서 팀워크가 빛났습니다.화기애애한 팀 분위기: 서로를 존중하고 배려하는 화기애애한 팀 분위기가 매우 만족스러웠습니다. 이러한 분위기 덕분에 더 효율적으로 협업할 수 있었습니다.코드 리뷰 및 작성 공유: 화면 공유를 통해 다 같이 코드 리뷰와 코드를 작성하는 과정이 좋았습니다. 이를 통해 서로 다른 구현 방식이나 생각을 공유할 수 있었고, 더 나은 솔루션을 찾는 데 도움이 되었습니다.Problem - 불편하게 느낀 부분문서 작성 부족: 문서 작성이 체계적이지 않아 업무 분담이 명확하지 않았고, 그로 인해 특정 인원에게 업무가 몰리는 경향이 있었습니..

내일배움캠프 2024.08.08

StringBuilder에 대한 가이드

1. StringBuilder란 무엇인가?StringBuilder는 자바에서 문자열을 조작할 때 사용되는 클래스입니다. java.lang 패키지에 포함되어 있으며, 문자열을 효율적으로 생성하고 수정할 수 있도록 설계되었습니다. StringBuilder는 변경 가능한(mutable) 객체로, 문자열을 더하거나 수정할 때 새로운 객체를 생성하지 않고도 원본 객체를 변경할 수 있습니다. 이는 String 클래스와의 주요 차이점으로, String은 불변(immutable) 객체이기 때문에 문자열을 조작할 때마다 새로운 객체를 생성합니다.2. StringBuilder를 어떻게 사용하는가?StringBuilder를 사용하는 방법은 매우 간단합니다. 먼저 StringBuilder 객체를 생성한 후, 다양한 메소드를 ..

JAVA 2024.08.07

자바 예외 처리: 자주 사용하는 예외 및 처리 기법

자바에서 예외 처리는 프로그램의 오류를 관리하고 안정성을 유지하는 데 필수적인 기능입니다. 예외 처리를 적절히 사용하면 프로그램이 예기치 않은 상황에서도 계속해서 실행될 수 있도록 할 수 있습니다. 이번 포스트에서는 자바에서 자주 사용하는 예외 처리 기법 5가지와 그 예제를 소개하겠습니다.1. NullPointerException설명: NullPointerException은 객체가 null일 때 객체의 메서드나 필드에 접근하려고 할 때 발생합니다. 이는 코드에서 참조가 잘못된 경우 발생할 수 있습니다. 예제 코드:public class NullPointerExample { public static void main(String[] args) { String str = null; ..

ERRORHiSTORY 2024.08.06

Iterator: 컬렉션을 안전하게 순회하기

Java 컬렉션을 다룰 때, 요소를 순회하면서 안전하게 제거하거나 수정할 필요가 종종 있습니다. 이럴 때 유용하게 사용할 수 있는 것이 바로 Iterator입니다. Iterator는 컬렉션의 요소를 순회할 수 있는 표준화된 방법을 제공하여, 요소의 접근과 제거를 안전하고 효율적으로 처리할 수 있도록 합니다. 이번 포스트에서는 Iterator의 개념, 사용 방법, 그리고 주요 기능에 대해 알아보겠습니다.Iterator란 무엇인가?Iterator는 Java 컬렉션 프레임워크의 일부로, 컬렉션(예: List, Set, Map 등)의 요소를 순차적으로 접근할 수 있는 객체입니다. Iterator는 다음과 같은 세 가지 주요 메서드를 제공합니다:hasNext(): 컬렉션에 순회할 다음 요소가 있는지 여부를 확인합..

JAVA 2024.08.05

[프로그래머스]마지막 두 원소

아무리 쉬운 코드도 리뷰 합니다.문제 설명정수 리스트 num_list가 주어질 때, 마지막 원소가 그전 원소보다 크면 마지막 원소에서 그전 원소를 뺀 값을 마지막 원소가 그전 원소보다 크지 않다면 마지막 원소를 두 배한 값을 추가하여 return하도록 solution 함수를 완성해주세요.제한사항2 ≤ num_list의 길이 ≤ 101 ≤ num_list의 원소 ≤ 9입출력 예num_list result[2, 1, 6] [2, 1, 6, 5][5, 2, 1, 7, 5] [5, 2, 1, 7, 5, 10]입출력 예 설명입출력 예 #1마지막 원소인 6이 그전 원소인 1보다 크기 때문에 6 - 1인 5를 추가해 return합니다.입출력 예 #2마지막 원소인 5가 그전 원소인 7보다 크지 않기 때문에 5의 두 배..