분류 전체보기 53

Spring 예외처리 전략

"Validaion" 특정 데이터(주로 클라이언트의 요청 데이터)의 값이 유효한지 검증하는 단계클라이언트 요청 데이터 -> ex) CreateMovieRequest, UpdateMovieRequest Validation은 Controller의 주요 역할 중 하나, HTTP요청이 정상인지 검증한다. "시스템이 미리 정의한 사양에 부합하고 있는지를 검증" 음식점에 메뉴가 제육덮밥, 라면, 돈까스, 수제비가 있다면 손님은 메뉴판에 있는 메뉴를 골라서 주문해야된다. Validation의 역할검증을 통해 적절한 메세지를 유저에게 보여주어야 한다.검증 오류로 인해 정상적인 동작을 하지 못하는 경우는 없어야 한다.사용자가 입력한 데이터는 유지된 상태여야 한다. 이러한 검증이 없으면, 이메일 형식이 아..

카테고리 없음 2026.02.06

IoC/DI, Bean

의존성이란?한 클래스가 다른 클래스(혹은 객체)를 사용하는 관계,쉽게 생각해서 의존성은 "내가 뭔가를 쓴다?" 그러면 의존하고 있는 것이다.public class Car { private Engine engine = new Engine(); // Car는 Engine에 의존 public void start() { engine.run(); // Engine 없으면 Car 못 씀 }}​ 코드를 보면, Car클래스는 Engine 객체에 의존하고 있다.ex)스마트폰은 배터리에 의존 (배터리 없으면 못씀)자동차는 연료에 의존 (연료 없으면 못 움직임)커피숍은 커피머신에 의존 (커피머신 없으면 커피를 못 만듦)내가 뭔가를 사용하고 있다 >> 내가 어떠한 개념에 의존하고 있다...

카테고리 없음 2026.02.05

응집도, 결합도, SOLID원칙

"응집도와 결합도" 응집도 : 하나의 클래스(또는 모듈)이 어람나 하나의 목적을 위해 긴밀하게 뭉쳐있는지 나타내는 척도,클래스 내의 메서드와 데이터들이 얼마나 서로 관련있는 작업을 수행하는지를 의미. "좋은 소프트웨어를 위해서는 응집도를 높여주어야 한다." 응집도를 높이기 위해서는?하나의 클래스는 하나의 책임만 가져야한다.예를 들어, MovieController라면 Movie와 관련된 요청 처리(조회, 생성, 수정, 삭제)만을 담당해야 한다. 결합도 : 하나의 클래스(또는 모듈)가 다른 클래스와 얼마나 많이 엮여있는지, 즉 얼마나 의존적인지를 나타내는 척도 "좋은 소프트웨어를 위해서는 결합도를 느슨하게 만들어줘야한다." "SOLID 원칙" Sing Responsibility Princ..

카테고리 없음 2026.02.05

Spring[입문] 일정 관리 앱 을 만들어 보자!

우선 시작 하기 앞 서 기본적인 설정들을 세팅해주자, 먼저 스프링 프로젝트를 만들 때 의존성으로 Lombok, Spring Web, Spring Data JPA, MySQL Driver를 추가해준다.의존성이란?의존성 (Dependency)은 프로젝트가 제대로 동작하기 위해 필요한 외부 라이브러리나 외부 코드를 의미하는데,프로그램을 만들 때 모든 기능을 처음부터 끝까지 직접 개발하는 것은 비효율적이다.그래서 이미 다른 사람들이 만들어 놓은 편리한 기능(부품)을 가져와 조립해서 사용하는데, 이것이 바로 "의존성"이다. 의존성은 프로젝트를 생성할 당시에 추가하여 사용하면 되는데, 만약 프로젝트를 생성할 때 실수로 추가를 못했다면, build.gradle안에 있는 dependencies에 직접 추가하여 사용해도..

카테고리 없음 2026.02.05

SpringBoot 입문!

"API란?" Application Programming Interface의 약자로, 프로그램끼리 대화하는 방법이다.레스토랑의 메뉴판 처럼 어떤 요청을 할 수 있고 어떤 응답을 받을 수 있는지 정의한다. RESTful API REST는 어떻게 서버 구현을 알지 못하는 클라이언트가 API를 잘 이용할 수 있을지에 대한 고민의 결과물 1. /users/items/12. asJnkA_sgd/dPPk12/cczz 1번과 2번중 1번 API가 훨씬 이해하기 쉽고, 어떤 역할을 할 지 예상이 가능하다. RESTful은 반드시 지켜야한다까지는 아니다. RESTful API 디자인 원칙 1. 동사보단 명사를, 단수보단 복수를 사용한다. /members/items >> O/member/get/item/hel..

카테고리 없음 2026.02.03

Spring MVC

요청클라이언트가 웹 애플리케이션에 요청(Request)을 보내고, 이 요청은 가장 먼저 DispatcherServlet에 도달합니다. 핸들러 조회DispatcherServlet은 HandlerMapping에게 요청을 처리할 Handler(=Controller)를 찾아달라고 요청합니다. 핸들러 실행DispatcherServlet은 HandlerMapping으로부터 받은 정보를 이용해 해당 Controller에게 요청 처리를 위임합니다. ModelAndView 반환Controller는 비즈니스 로직을 수행한 후, 결과 데이터(Model)와 뷰의 논리적 이름(View Name)을 담은 ModelAndView 객체를 DispatcherServlet에 반환합니다. 뷰 해석DispatcherServlet은 Mode..

카테고리 없음 2026.01.30

Controller & RestController

"Controller & RestController" 백엔드와 프론트엔드의 역할이 분리됨에 따라 프론트엔드는 화면에 그려낼 Data가 필요한데(프론트는 Data를 가지고 있지 않음),백엔드는 주로 이 Data를 JSON형식으로 내려준다. (Model 대신 JSON 데이터를 프론트에게 응답하는 경우) 1. 클라이언트가 Request를 보내면 DispatcherServlet이 받음.2. DispatcherServlet은 이 요청을 Handler Mapping을 통해서 해당 Controller에게 보냄3. 해당 Controller가 이 요청을 처리하고 데이터(JSON형태)를 정제해서 보내줌4. JSON 데이터를 DispatcherServlet이 클라이언트에게 Response로 내려가게 됨 1. @..

카테고리 없음 2026.01.30

Hash Set

"Hash Set" Hash Set은 순서를 유지하지 않고, 중복도 허용하지 않는다. Set인터페이스를 구현한 대표적인 class는 1. Hash Set2. Tree Set 1. Hash Set Set 인터페이스를 구현한 대표적인 컬렉션 클래스순서를 유지하려면 LinkedHashSet클래스를 사용하면 된다. 2. Tree Set 범위 검색(from ~ to)과 정렬에 유리한 컬렉션 클래스Hash Set보다 데이터 추가, 삭제에 시간이 더 걸 Hash Set의 주요 메서드 HashSet( )HashSet(Collection c) - 생성자 (지정하는 컬렉션에 모든 객체를 저장) HeshSet(int initialCapacity) - 초기용량 (처음 크기 설정, 보통 2배로 설정함) HeshS..

카테고리 없음 2026.01.28

Comparator & Comparable

"Comparator & Comparable" 객체 정렬에 필요한 메서드(정렬기준 제공)를 정의한 인터페이스 Comparable : 기본 정렬기준을 구현하는데 사용Comparator : 기본 정렬기준 외에 다른 기준으로 정렬하고자할 때 사용 Comparable >> compareTo();Comparator >> compare(); public interface Comparator {int compare(Object o1, Object o2); compare >> Comparator가 가지고 있는 메서드 int compare(Object o1, Object o2); >> o1과 o2를 비교해서 정수값 반환 *****결과 값 : 0 >> o1과 o2가 같다결과 값 : 양수 >> 왼쪽값이 더 크다..

카테고리 없음 2026.01.28

Iterator, ListIterator, Enumeration

"Iterator, ListIterator, Enumeration""컬렉션에 저장된 데이터를 접근하는데 사용되는 인터페이스" Enumeration은 Iterator의 구버전ListIterator는 Iterator의 접근성을 향산시킨 것 (단방향 -> 양방향) 1. Iterator 인터페이스의 메서드 메서드설명boolean hasNext( )읽어 올 요소가 남아있는지 확인한다. 있으면 true, 없으면 false 반환Object next( )다음 요소를 읽어 온다. next( )를 호출하기 전에 hasNext( )를 먼저 호출해서 읽어 올 요소가 있는지 확인하는 것이 안전하다.void remove( )next( )로 읽어 온 요소를 삭제한다. next( )를 먼저 호출하고 remove( )를 호출..

카테고리 없음 2026.01.28