분류 전체보기 59

Spring 커스텀 예외 만들기와 전역 예외 처리

Spring으로 회원 조회 API를 구현하면서 존재하지 않는 회원을 조회했을 때 예외를 어떻게 발생시키고, 발생한 예외를 어떻게 처리하는지 학습했다.처음에는 IllegalStateException을 사용했다.@Transactional(readOnly = true)public GetMemberResponse getOne(Long memberId) { Member member = memberRepository.findById(memberId) .orElseThrow( () -> new IllegalStateException("없는 멤버입니다.") ); return new GetMemberResponse( ..

Spring 22:26:53

AWS VPC와 EC2 기초 정리

오늘은 AWS에서 직접 VPC를 구성하고 Public Subnet에 EC2를 생성한 뒤 SSH로 접속해보았다.처음에는 VPC, Subnet, EC2가 전부 따로 노는 개념처럼 보였는데 직접 구성해보니 다음과 같은 관계였다.AWS│└── VPC │ ├── Public Subnet │ │ │ └── EC2 ← 오늘 생성한 서버 │ └── Private Subnet 1. VPC란?VPC(Virtual Private Cloud)는 AWS 클라우드 안에 만드는 사용자 전용 가상 네트워크다.AWS를 아주 거대한 땅이라고 한다면 그중에서 내가 사용할 공간을 하나 떼어서 울타리를 치고,"여기부터 여기까지는 내가 사용할 네트워크야" 라고 만든 공간이 VPC다..

AWS 2026.08.03

REPLACE, SUBSTRING, CONCAT 함수 정리

1. REPLACE문자열에서 특정 문자를 다른 문자로 변경할 때 사용하는 함수 기본 문법REPLACE(문자열, 변경할 문자열, 변경될 문자열) 예시SELECT REPLACE('Hello World', 'World', 'SQL'); 결과Hello SQL 2. SUBSTRING문자열의 일부를 잘라서 가져오는 함수 기본 문법SUBSTRING(문자열, 시작위치, 길이) 시작위치는 1부터 시작 예시SELECT SUBSTRING('Database', 1, 4); 결과Data 3. CONCAT여러 문자열을 하나로 이어 붙일 때 사용하는 함수 기본 문법CONCAT(문자열1, 문자열2, ...) 예시SELECT CONCAT('Hello', ' ', 'SQL'); 결과Hello SQL

SQL 2026.07.31

클라우드

클라우드란?클라우드(Cloud)란 인터넷을 통해 서버, 저장소, 데이터베이스, 네트워크 등의 IT 자원을 필요한 만큼 빌려 사용하는 서비스이다.예전에는 직접 서버를 구매하고 관리해야 했지만, 클라우드를 사용하면 필요한 만큼만 사용하고 비용도 사용한 만큼만 지불하면 된다. 클라우드 서비스 종류클라우드는 제공 범위에 따라 크게 IaaS, PaaS, SaaS 세 가지로 나뉜다. 1. IaaS (Infrastructure as a Service)인프라(서버, 네트워크, 스토리지)를 제공하는 서비스사용자는 운영체제 설치부터 프로그램 실행까지 직접 관리한다.특징서버를 직접 생성 가능운영체제 설치 및 관리높은 자유도개발자가 서버를 직접 관리해야 함대표 서비스AWS EC2Microsoft Azure Virtual M..

AWS 2026.07.30

SQL ORDER BY 정리

1. ORDER BYORDER BY는 SELECT로 조회한 결과를 특정 컬럼을 기준으로 정렬할 때 사용기본적으로 오름차순(ASC) 으로 정렬된다.SELECT *FROM usersORDER BY age; 2. ASC : 오름차순작은 값 → 큰 값 순서로 정렬SELECT *FROM usersORDER BY age ASC; 결과 예시철수20영희25민수303. DESC : 내림차순큰 값 → 작은 값 순서로 정렬SELECT *FROM usersORDER BY age DESC; 결과 예시민수30영희25철수20 4. 여러 컬럼으로 정렬하기정렬 기준을 여러 개 지정할 수도 있다.SELECT *FROM usersORDER BY age ASC, name ASC;이 경우 먼저 age를 기준으로 정렬하고, 나이가 같은 데이터..

SQL 2026.07.29

SQL 집계 함수와 GROUP BY

1. COUNT() — 데이터 개수 세기조건에 맞는 데이터가 몇 개인지 확인할 때 사용SELECT COUNT(*)FROM users; users 테이블에 있는 전체 행의 개수를 반환한다.특정 컬럼의 개수를 셀 수도 있다.SELECT COUNT(email)FROM users; email 값이 NULL이 아닌 데이터의 개수를 센다. 2. MAX() — 최댓값특정 컬럼에서 가장 큰 값을 찾을 때 사용SELECT MAX(price)FROM products; 상품 중 가장 비싼 가격을 조회한다.3. MIN() — 최솟값특정 컬럼에서 가장 작은 값을 찾을 때 사용SELECT MIN(price)FROM products; 상품 중 가장 저렴한 가격을 조회한다. 4. AVG() — 평균값특정 컬럼의 평균을 계산한다.SE..

SQL 2026.07.28

Spring MVC의 ArgumentResolver 등록하고 사용하기

1. ArgumentResolver란?Argument = 메서드의 매개변수Resolver = 해결해주는 객체ArgumentResolver는 Spring MVC가 컨트롤러 메서드를 호출할 때 필요한 매개변수(Argument)를 어떻게 만들어서 넣어줄지 결정하는 역할을 한다. @GetMapping("/users/{userId}")public UserResponse getUser(@PathVariable Long userId) { ...}Spring MVC는 요청 URL에 있는 userId 값을 가져와서 메서드의 Long userId 파라미터에 넣어준다. @PostMapping("/users")public void createUser(@RequestBody SignupRequest request) { ..

TIL 2026.07.27

Java Enum 활용하기 - 계산기 과제로 이해하는 Enum

계산기 과제를 복습하면서 사칙연산 기호를 관리하기 위해 Enum을 사용해보았다.처음에는 단순히 +, -, *, /를 switch문에서 직접 비교했지만, 도전 과제에서는 Enum을 활용하여 연산자 정보를 하나의 타입으로 관리해보았다.이번 글에서는 계산기 과제에서 사용한 코드를 기준으로 Java의 Enum을 어떻게 활용할 수 있는지 정리해보자.1. Enum이란?Enum은 서로 관련된 상수들을 하나의 타입으로 묶어서 관리할 수 있도록 해주는 문법이다.이 값들은 프로그램이 실행되는 동안 갑자기 다른 연산자로 변경될 필요가 없다.이처럼 정해진 값들을 하나의 그룹으로 관리하고 싶을 때 Enum을 사용할 수 있다. 계산기 과제에서는 OperatorType이라는 Enum을 만들었다.public enum Operator..

TIL 2026.07.24

싱글톤(Singleton) 패턴이란?

1. 싱글톤이란?싱글톤(Singleton)은 특정 클래스의 인스턴스를 프로그램 전체에서 단 하나만 생성되도록 보장하는 디자인 패턴이다. 일반적으로 객체를 생성하면 new를 사용할 때마다 새로운 인스턴스가 만들어진다.MyClass a = new MyClass();MyClass b = new MyClass();이 경우 a와 b는 서로 다른 객체이다.하지만 싱글톤으로 설계된 클래스는 여러 곳에서 사용하더라도 하나의 인스턴스만 공유해서 사용한다. 2. 싱글톤은 어디에 사용할까?싱글톤은 애플리케이션 전체에서 하나만 존재해도 되는 객체에 사용할 수 있다.대표적인 예시는 다음과 같다. ① 설정(Configuration) 객체프로그램 전체에서 공통으로 사용하는 설정 정보를 관리하는 객체이다.애플리케이션 ├─ A 기..

TIL 2026.07.23

error: cannot find symbol @Value("${jwt.secret.key}") 해결

1. 문제 상황 JWT를 구현하면서 application.yml에 저장된 JWT Secret Key를 가져오기 위해 @Value 어노테이션을 사용했다.근데 심볼을 찾을 수 없다는 오류가 뜸. 2. 원인문제의 원인은 Lombok과 Spring 모두 @Value라는 이름의 어노테이션을 가지고 있는데나는 Lombok의 @Value 이노테이션을 import하고 있었음.3. 해결 방법Spring Framework에서 제공하는 @Value를 import하도록 수정했다. 4. Spring의 @Value란?Spring의 @Value는 application.properties 또는 application.yml 등에 설정된 값을 주입받을 때 사용하는 어노테이션이다.예를 들어 application.yml에 다음과 같이 ..

트러블슈팅 2026.07.22