📚 소프트웨어 개발을 간편하게 만들기 위한 소프트웨어 개발 환경.
📚 애플리케이션 개발에 필요한 클래스, 함수 등을 모은 코드의 모음.

📚 코드에 메타데이터 추가 기능 제공. 프로그램에게 정보를 전달하는 목적
코드에 특별한 의미부여 및 컴파일러와 런타임에 특정 동작을 트리거하기 위해 사용
👉 어노테이션은 @ 기호로 시작. 클래스, 메서드, 변수, 매개변수, 패키지 등에 추가 가능
📌 내장 어노테이션
@Override@Deprecated@SuppressWarnings📌 사용자 정의 어노테이션
📚 보일러 플레이트 코드를 줄여주는 라이브러리.
보일러 플레이트 코드 자동생성 → 가독성, 유지보수성 향상
어노테이션 기반으로 동작, 주로 컴파일 시점에 소스 코드를 변환하여 필요한 메서드를 자동생성
❓ 보일러 플레이트 코드(Boilerplate code) : 생성자, getter/setter, toString메서드 처럼 반복작성되는 코드
📌 주요 Lombok Annotation
@Getter, @Setter
클래스의 모든 필드에 대한 getter / setter 메서드 자동생성
@Getter
@Setter
public class User {
private String name;
private int age;
/** 아래 코드를 @Getter, @Setter 어노테이션이 생성
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
**/
}
@ToString
toString() 메서드 자동생성@ToString
public class User {
private String name;
private int age;
}@EqualsAndHashCode
equals()와 hashCode() 메서드 자동생성@EqualsAndHashCode
public class User {
private String name;
private int age;
}@NoArgsConstructor, @AllArgsConstructor, @RequiredArgsConstructor
@NoArgsConstructor
@AllArgsConstructor
public class User {
private String name;
private int age;
}@Data
@Getter @Setter @ToString @EqualsAndHashCode @RequiredArgsConstructor 동시 적용@Data
public class User {
private String name;
private int age;
}@Builder
@Builder
public class User {
private String name;
private int age;
}User user = User.builder()
.name("John")
.age(30)
.build();@Slf4j
Logger 객체 자동생성@Slf4j
public class UserService {
public void logMessage() {
log.info("This is a log message");
}
}📚 Java Application Framework로 엔터프라이즈 애플리케이션 개발에 주로 사용
캡슐화 상속 추상화 다형성📚 Spring Framework를 기반으로 신속,간편하게 애플리케이션을 개발하도록 도와주는 도구
spring-boot-starter-web을 빌드 관리 도구에 추가시 필요한 모든 종속성과 설정 자동구성100%는 아님📚 Java와 유사한 문법 구조를 가진 Groovy기반의 스크립트 언어를 사용하며 다양한 소프트웨어를 빌드(Build)할 수 있는 유연한 빌드 자동화 도구.
빌드(Build) : 소스 코드를 컴퓨터가 실행 가능한 파일로 변환해주는 작업
빌드에 필요한 과정
빌드 자동화 도구 : 빌드, 라이브러리 관리, 테스트, 배포 등을 자동화 하여 수행
📌 Gradle 특징
유연성
성능
멀티 프로젝트 빌드 지원
공통 클래스를 모듈로 만들어 독립적인 각 프로젝트에서 사용 가능하게 함
설정 주입 방식
📚 Groovy 기반 빌드 스크립트. 스크립트를 작성하면 소스 코드를 빌드하고, 라이브러리 의존성 관리 가능
plugins {
id 'java'
id 'org.springframework.boot' version '3.1.5'
id 'io.spring.dependency-management' version '1.1.3'
}
의존성 관리 : 프로젝트에서 사용하는 라이브러리나 패키지 관리
dependencies {
// JPA
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
// SECURITY
implementation 'org.springframework.boot:spring-boot-starter-security'
// WEB
implementation 'org.springframework.boot:spring-boot-starter-web'
// LOMBOK
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
// MySQL
runtimeOnly 'com.mysql:mysql-connector-j'
// Validation
implementation 'org.springframework.boot:spring-boot-starter-validation'
// JWT
compileOnly group: 'io.jsonwebtoken', name: 'jjwt-api', version: '0.11.5'
runtimeOnly group: 'io.jsonwebtoken', name: 'jjwt-impl', version: '0.11.5'
runtimeOnly group: 'io.jsonwebtoken', name: 'jjwt-jackson', version: '0.11.5'
// DEV_TOOL
developmentOnly 'org.springframework.boot:spring-boot-devtools'
// TEST
testRuntimeOnly 'com.h2database:h2'
testCompileOnly 'org.projectlombok:lombok'
testCompileOnly group: 'io.jsonwebtoken', name: 'jjwt-api', version: '0.11.5'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
}
repositories : 라이브러리가 저장된 위치를 정의하고 저장소에서 라이브러리를 가져옴
repositories {
mavenCentral()
}
📚 서블릿과 JSP로 시작 → MVC 패턴 → MVC 프레임워크로 구조화 → 어노테이션 기반의 Spring MVC → 비동기 처리에 최적화된 Spring WebFlux로 발전
⭐ 최신 기술 동향
Spring MVCSpring WebFlux