전체 글 74

TIL 30 : DI, Validation 복습

Inversion of control (제어의 역전 = IoC)원래는 개발자가 객체를 만들고 관리했는데 이제는 스프링이 객체를 대신 만들고 넣어주는 구조 = 제어를 스프링에게 맡긴다. 💥 예시: IoC가 없는 코드public class OrderService { private UserRepository userRepository = new UserRepository(); // 직접 생성!} ✅ IoC 적용한 코드 (스프링 스타일)@Componentpublic class OrderService { private final UserRepository userRepository; public OrderService(UserRepository userRepository) { // 생성자 주입!..

코딩/sparta TIL 2025.03.31

TIL 29 : 객체지향 설계, ApplicationContext, @ControllerAdvice VS @RestControllerAdvice

객제지향 설계🥸 객체지향 설계를 하는 이유코드가 점점 커지고 복잡해질 때 유지보수와 변경에 강한 “유연한 설계”를 하기 위해서 단일 책임 원칙(SRP, Single Responsibility Principle)하나의 클래스는 하나의 책임만 가져야 한다.🧐 Why?한 클래스가 여러 역할을 하면 수정할 때 연쇄적으로 망가질 가능성↑🧠 비유📦 택배기사 클래스가 “운전도 하고, 택배도 포장하고, 고객센터 전화까지 받는다?”→ 운전 기능 하나 고치면 전화 기능이 깨짐 😱 개방 폐쇄 원칙(OCP, Open Closed Principle)확장엔 열려 있고, 변경엔 닫혀 있어야 한다.🧠 비유🍕피자 가게가 “새 메뉴 추가할 때마다 요리사 클래스를 수정한다면?”→ 요리사 터져버림 🧠💥 리스코프 치환 원칙(..

코딩/sparta TIL 2025.03.28

TIL 28 : 이해 1도 안됨, 다시 봐야함, 그냥 강의자료 메모 🤬

객체 지향 설계 SOLID 원칙📚 객체 지향 설계의 5가지 기본 원칙, 소프트웨어 설계에서 유지보수성, 확장성, 유연성을 높이기 위한 지침을 제공한다. SOLID 원칙의 종류단일 책임 원칙 SRP(Single Responsibility Principle)하나의 클래스는 하나의 책임만 가져야 한다.// 예시public class User { /* 사용자 정보 관리 */ }public class AuthService { public void login(User user) { /* 로그인 기능 */ }}public class UserRepository { public void saveUser(User user) { /* 데이터베이스 저장 */ }}개방 폐쇄 원칙 OCP(Open Closed Pri..

코딩/sparta TIL 2025.03.26

TIL 27 : Spring 예외처리 방법

어노테이션역할사용처@Valid유효성 검사 시작 트리거@RequestBody, @ModelAttribute 등 DTO 매개변수@Validated@Valid와 같지만 그룹 지정 기능 추가마찬가지로 Controller 파라미터@ExceptionHandler특정 예외 처리 메서드Controller 클래스 안 or @ControllerAdvice 클래스 안@ControllerAdvice전역 예외 처리 담당 클래스전체 Controller 대상으로 예외 핸들링 ✅ 1. @Valid vs @Validated데이터를 검증하기 위한 어노테이션이를 활성화 하기 위해서는 아래 의존성을 추가 해야 합니다.// https://mvnrepository.com/artifact/org.springframework.boot/spring..

코딩/sparta TIL 2025.03.26

CH3 일정 관리 앱 만들기

😳 코드내 인터페이스로 메서드 인식이 가능한 이유아래 구조를 보면 이런식으로 선언하고 써야하지 않나 생각했는데private final JdbcTemplateMemo memoRepository; 🌱 가능한 이유바로 스프링의 DI(의존성 주입) + 빈 자동 등록 구조 때문.👉 한마디로 말하면: “인터페이스 타입으로 선언해도, 그걸 구현한 클래스(@Repository 붙은 것)를 스프링이 자동으로 찾아서 주입해줌!” 여기서 의문이 생겼는데🔍 의문: “근데 MemoRepository 인터페이스를 사용한 구현체가 여러 개면 어떡하나?”찾아보니 해결방법이 있음. ✅ 해결 방법 3가지 (실무에서도 사용)@Primary :하나를 "우선 주입 대상"으로 설정@Qualifier("이름") : 명시적으로 어떤 빈을 ..

코딩/sparta TIL 2025.03.24

TIL 26 : Spring 기초 코드 복습

POST하고 왜 굳이 응답을 해야할까?🎁 만약 응답을 안 하면?✔ 서버에서는 메모는 생성될 수 있지만,❌ 클라이언트는 “뭐가 저장됐는지” 전혀 알 수 없음❌ 상태코드도 200 OK로 나갈 수 있어서, REST API 설계상 부족한 응답이 돼버림. 결국📌 클라이언트가 확인할 수 있게 (메모가 정상적으로 생성됐는지 응답해야 함)📌 클라이언트가 UI를 갱신할 수 있게 (새로 생성된 메모의 id, 제목, 내용 등 필요한 정보를 클라이언트에게 보내줘야 함)📌 REST API 원칙 (POST 요청 후엔 보통 201 상태코드 + 생성된 리소스 정보를 반환함)@RestController@RequestMapping("/memos") // prefix// Json형태 데이터public class MemoContro..

코딩/sparta TIL 2025.03.24

TIL 25 : Layered Architecture, DB

Layered Architecture📚애플리케이션을 세 가지 주요 계층으로 나누어 구조화하는 방법으로 각 계층은 특정한 책임을 갖고 있으며, 계층 간에는 명확한 역할 분담이 이루어져 코드의 재사용성, 유지보수성, 확장성을 높이는 데 도움을 준다.  Layered Architecture 구조Presentation Layer사용자의 요청을 받고 응답하는 역할을 수행한다. (Controller)화면을 응답하거나 데이터를 응답하는 API를 정의한다.Business Layer(Service Layer)비지니스 로직을 수행한다.요청을 해석하여 Repository Layer에 전달한다.일반적으로 하나의 비지니스 로직은 하나의 트랜잭션으로 동작한다.Data Access Layer(Repository Layer)데이터..

코딩/sparta TIL 2025.03.21

TIL 24 : Spring 요청, 응답 처리 기초

요약더보기클라이언트에서 서버로 데이터를 전달하는 방법1. Get : @RequestParam, @ModelAttribute2. Post (HTML Form) : @RequestParam, @ModelAttribute3. HTTP Request Body : @RequestBody✅ 정리: 클라이언트 ➡ 서버로 보내는 방식방식설명애노테이션GETURL에 붙여서 보냄@RequestParam, @ModelAttributePOST (Form)HTML 폼에서 전송@RequestParam, @ModelAttributeHTTP BodyJSON 등 raw 데이터 전송@RequestBody 서버에서 HTTP응답을 클라이언트에 전달하는 세가지 방법1. 정적리소스2. View Template : @controller3. HTT..

코딩/sparta TIL 2025.03.21

TIL 23 : MVC, Annotation 복습

Spring MVC, Spring Boot 차이점 둘 다 Spring 프레임워크 기반이지만, Spring Boot는 Spring MVC를 더 쉽게 사용할 수 있도록 만들어진 버전.비교 항목Spring MVCSpring Boot설정(Configurations)XML 또는 Java 설정을 직접 해야 함자동 설정 (Spring Boot Starter)내장 웹 서버직접 Tomcat 등을 설정해야 함기본적으로 Tomcat 내장 (Jetty, Undertow도 가능)빌드 속도설정이 많아 초기 설정 시간이 필요함설정이 적어 빠르게 개발 가능의존성관리 필요한 라이브러리를 직접 추가해야 함spring-boot-starter-*로 자동 관리REST API 개발컨트롤러 작성 후 설정 필요컨트롤러만 작성하면 자동 실행JSP ..

코딩/sparta TIL 2025.03.20

TIL 22 : Spring Annotation, Request Mapping

Spring Annotation 1강@Slf4j📚 Slf4j는 인터페이스이고 그 구현체로 Logback같은 라이브러리를 선택(default)한다. 실제 개발에서는 Spring Boot가 기본으로 제공하는 Logback을 대부분 사용한다.IntelliJ로 clone한 프로젝트 열기 및 실행프로젝트https://github.com/UK-spring/spring-basic-mvc-v2실행IntelliJ 실행 → Open → 프로젝트 폴더 선택 → OpenLogging (로그 기능)Thread 정보, 클래스 이름과 같은 부가 정보를 함께 확인할 수 있다.실제 운영 환경에서는 System.out.println();을 사용하여 Console에 정보를 출력하지 않고, 별도의 로깅 라이브러리를 사용하여 로그를 출력한..

코딩/sparta TIL 2025.03.19