스프링 부트 프로젝트를 시작하기 위한 기본 환경 설정 정리
| 항목 | 설명 |
|---|---|
| 🧩 시스템 빌드 | Gradle (Groovy) |
| ☕ JDK 버전 | 17 |
| 🚀 프로젝트 실행 절차 | 1️⃣ 클래스 상단에 @SpringBootApplication 작성2️⃣ 메소드 내 SpringApplication.run(클래스명.class) 작성3️⃣ http://localhost:8080/ 접속으로 실행 확인 |
| 🧱 정상 화면 | Whitelabel Error Page (Spring 서버 정상 구동) |
| ⚠️ 비정상 화면 | “사이트에 연결할 수 없음” → 서버 실행 실패 |
| 항목 | 설명 |
|---|---|
| 🧠 Spring | 자바 기반 엔터프라이즈급 애플리케이션 개발 프레임워크 |
| 🏛️ 전자정부프레임워크 | 대한민국 공공 프로젝트 개발 표준 (Spring 기반) |
| ⚙️ Spring 주요 특징 | - IOC / DI (의존성 주입) - AOP (로직 분리 및 모듈화) - MVC2 3-Tier 구조 필수 - 확장성 우수 |
| 🚀 Spring Boot | 스프링을 빠르게 사용할 수 있도록 자동 설정 기반의 스타터 프레임워크 - 복잡한 설정 자동 제공 - 내장 Tomcat 포함 |
| 🧱 Tomcat | 자바 기반 웹 개발용 내장 서버 (HTTP 요청/응답 처리 포함) |
| 🔧 Gradle | 자바 기반 빌드 자동화 도구 - 의존성 관리, 배포, 패키징 자동 처리 |
코드에 메타데이터를 부여하여 동작을 정의하거나 관리하는 기능
| 항목 | 설명 |
|---|---|
| 📘 정의 | Java 및 Spring에서 코드에 메타데이터를 추가하는 문법 |
| 🎯 목적 | 코드 간소화, 가독성 향상, 메타데이터 제공 |
| 💬 예시 | @Override, @Deprecated 등 — 코드 설명서 역할 |
| 분류 | 설명 | 예시 |
|---|---|---|
| 🧱 표준 어노테이션 | 자바에서 기본 제공 | @Override, @Deprecated |
| ⚙️ 메타 어노테이션 | 코드의 동작이나 정의를 제어 | Spring, Servlet 관련 |
@interface 어노테이션명 { }
| 어노테이션 | 설명 |
|---|---|
🔁 @Retention | 어노테이션 유지 기간 지정 |
➡️ RetentionPolicy.RUNTIME | 런타임까지 유지 |
➡️ RetentionPolicy.CLASS | .class 파일까지 유지 (실행 전 포함) |
➡️ RetentionPolicy.SOURCE | 컴파일 후 삭제 |
🎯 @Target | 어노테이션 적용 위치 지정 |
➡️ ElementType.METHOD | 메소드 |
➡️ ElementType.TYPE | 클래스, 인터페이스 등 |
➡️ ElementType.FIELD | 멤버변수 |
➡️ ElementType.PARAMETER | 매개변수 |
➡️ ElementType.CONSTRUCTOR | 생성자 |
| 어노테이션 | 설명 |
|---|---|
🎯 @Controller | 컨트롤러 클래스에 선언 → @Component 포함 (자동 싱글톤 객체 생성) |
🌍 @RestController | @Controller + @ResponseBody + @Component 결합형 |
💬 @ResponseBody | 자바 객체를 HTTP가 이해할 수 있는 JSON으로 자동 변환 |
⚙️ @SpringBootApplication | 스프링 기본 설정 + 컴포넌트 스캔 + 내장 톰캣 실행 |
REST는 CRUD 기능을 HTTP 메소드로 구현하는 웹 통신 구조
| 기능 | 설명 | 어노테이션 |
|---|---|---|
| 🟢 등록 (CREATE) | 자원 생성 | @PostMapping |
| 🔵 조회 (READ) | 자원 조회 | @GetMapping |
| 🟠 수정 (UPDATE) | 자원 수정 | @PutMapping |
| 🔴 삭제 (DELETE) | 자원 삭제 | @DeleteMapping |
💡 Tip:
@ResponseBody 필요 프로젝트 수행 중 얻은 인사이트 및 개선점 정리
| 항목 | 내용 |
|---|---|
| 💡 프로토타입의 한계 | 초기 완성 후에도 다음 단계로 갈수록 수정사항이 계속 발생 |
| 🧠 개선 접근법 | 완벽한 설계보다 직접 구현하며 피드백을 받는 것이 효과적 |
| 🔗 DB 설계 중요성 | PK-FK 관계와 기능 간 연결 구조를 명확히 설계해야 함 |
| ⚙️ 실무적 차이점 | 예상보다 훨씬 다양한 예외 상황과 구체적인 구현 요구 발생 |