✏️ Spring Framework를 사용하기 위한 기본 개념에 대해서 학습합니다.

개발자들이 HTTP 요청을 만들고, 서버로부터 응답을 확인하며, API의 기능을 테스트하고 디버깅할 수 있게 해주는 소프트웨어
💡 Postman은 RESTful API뿐만 아니라 GraphQL, SOAP 등 다양한 API 유형을 테스트할 수 있고 Postman 공유를 통한 팀 간의 협업도 가능하다.
📚 소프트웨어 개발을 간편하게 만들기 위한 소프트웨어 개발 환경. 프레임워크는 frame(틀) work(일하다)의 합성어로 일하기 위한 틀을 제공한다.
📚 애플리케이션 개발에 필요한 클래스, 함수 등을 모아 놓은 코드의 모음을 의미한다. 마치 도서관에 있는 책처럼 개발자가 소프트웨어를 만들 때 필요에 따라 원하는 기능을 구현하기 위해 가져다 쓸 수 있는 일종의 도구 역할을 수행

📚 코드에 메타데이터를 추가할 수 있는 기능을 제공하며 주로 코드에 특별한 의미를 부여하거나, 컴파일러와 런타임에 특정 동작을 트리거하기 위해 사용
💡 주석은 사람에게 정보를 제공하는 것이라면, 어노테이션은 특정 코드를 사용하는 프로그램에게 정보를 전달
@ 기호로 시작하며, 클래스, 메서드, 변수, 매개변수, 패키지 등에 추가
@Override@Deprecated: 더 이상 사용되지 않음@SuppressWarnings: 컴파일러 경고 억제📚 보일러 플레이트 코드를 줄여주는 라이브러리로 자동으로 보일러 플레이트 코드를 생성하여 코드의 가독성과 유지보수성을 높여준다. Lombok은 어노테이션 기반으로 동작하며, 주로 컴파일 시점에 소스 코드를 변환하여 필요한 메서드를 자동으로 생성
💡 보일러 플레이트 코드(Boilerplate code)
getter/setter 메서드, 생성자, toString 메서드 등과 같이 반복적으로 작성되는 코드
@Getter, @Setter
클래스의 모든 필드에 대한 getter와 setter 메서드를 자동으로 생성
@ToString
@EqualsAndHashCode
생성자 관련
@NoArgsConstructor: 기본 생성자@AllArgsConstructor: 모든 필드를 매개변수로 하는 생성자@RequiredArgsConstructor: 필수 필드(final)만을 매개변수로 하는 생성자@Data
@Getter, @Setter, @ToString, @EqualsAndHashCode,@RequiredArgsConstructor를 한꺼번에 적용하는 어노테이션이다.@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 Framework 특징

📚 Spring Framework를 기반으로 하여 간편하고 신속하게 애플리케이션을 개발할 수 있도록 도와주는 도구이다.
spring-boot-starter-web를 빌드 관리 도구에 추가하면 웹 애플리케이션에 필요한 모든 종속성(라이브러리)과 설정이 자동으로 구성된다.
📚 Java와 유사한 문법 구조를 가진 Groovy기반의 스크립트 언어를 사용하며 다양한 소프트웨어를 빌드(Build)할 수 있는 유연한 빌드 자동화 도구이다.
소스 코드를 컴퓨터가 실행 가능한 파일로 변환해주는 작업

Groovy 기반 언어의 빌드 스크립트
소스 코드를 빌드하고, 라이브러리들의 의존성을 관리
Implementation: 컴파일, 런타임 시점 모두에서 사용한다.compileOnly: 컴파일할 때만 사용되고 런타임 때에는 사용하지 않는다.runtimeOnly: 런타임 때만 사용한다.testImplementation: 테스트할 때만 사용한다. repositories {
mavenCentral()
}🏁 Servlet의 등장 (1997)
→ JSP (JavaServer Pages) 도입 (1999)
→ Servlet, JSP 기반의 MVC 패턴 도입
→ MVC 프레임워크의 등장과 발전 (2000~2010)
→ Annotation 기반의 Spring MVC(2007~현재)
→ 🌱 Spring Boot의 등장(2014~현재)