Spring 입문 강의
개발자들이 HTTP 요청을 만들고, 서버로부터의 응답을 확인하며, API의 기능을 테스트하고 디버깅할 수 있게 해줌.
소프트웨어 개발을 간편하게 만들기 위한 소프트웨어 개발 환경
애플리케이션 개발에 필요한 클래스, 함수 등을 모아 놓은 코드의 모음을 의미
코드에 메타데이터를 추가할 수 있는 기능을 제공하며 주로 코드에 특별한 의미를 부여하거나, 컴파일러와 런타임에 특정 동작을 트리거하기 위해 사용
주석은 사람에게 정보 전달하는 것, annotation은 컴퓨터에게 정보 전달하는 것
어노테이션은 @ 기호로 시작하며, 클래스, 메서드, 변수, 매개변수, 패키지 등에 추가
@Override
@Deprecated : 해당 요소 더 이상 사용X
@SuppressWarnings : 컴파일러 경고 억제
⚠보일러 플레이트 코드(Boilerplate code)란?
getter/setter 메서드, 생성자, toString 메서드 등과 같이 반복적으로 작성되는 코드
클래스의 모든 필드에 대한 getter와 setter 메서드를 자동으로 생성
@ToString객체의 toString() 메서드를 자동으로 생성
@EqualsAndHashCode equals()와 hashCode() 메서드를 자동으로 생성
@NoArgsConstructor, @AllArgsConstructor, @RequiredArgsConstructor@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-boot-starter-web를 빌드 관리 도구에 추가하면 웹 애플리케이션에 필요한 모든 종속성과 설정이 자동으로 구성정리하자면 라면은 Java, 냄비는 Spring, 조리도구는 Spring Boot
Java와 유사한 문법 구조를 가진 Groovy기반의 스크립트 언어를 사용하며 다양한 소프트웨어를 빌드(Build)할 수 있는 유연한 빌드 자동화 도구
빌드, 라이브러리 관리, 테스트, 배포 등을 자동화 하여 수행
유연성
성능
멀티 프로젝트 빌드 지원
설정 주입 방식
Groovy 기반 언어의 빌드 스크립트로 스크립트를 작성하면 소스 코드를 빌드하고, 라이브러리들의 의존성을 관리할 수 있음
특정 작업을 위해 모아 놓은 task들의 모음집
plugins {
id 'java'
id 'org.springframework.boot' version '3.1.5'
id 'io.spring.dependency-management' version '1.1.3'
}
아래 task들이 추가되어 실행할 수 있게 됨
프로젝트에서 사용하는 라이브러리나 패키지를 관리
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 {
mavenCentral()
}
Servlet의 등장 (1997) -> JSP (JavaServer Pages) 도입 (1999) -> Servlet, JSP 기반의 MVC 패턴 도입
-> MVC 프레임워크의 등장과 발전 (2000~2010) -> Annotation 기반의 Spring MVC(2007~현재), Spring Boot의 등장(2014~현재)
계속 하다보니까 나름 알아가는 맛이 있는 것 같기도 하고 조금씩 익숙해지는 느낌이 든다. 빠르게 빠르게 TIL 속도를 좀 올려야 겠다. 지금 5주차 강의 거의 끝나가는 데.. 화이팅!