라이브러리와 프레임워크
- 라이브러리를 사용하는 애플리케이션 코드는 애플리케이션 흐름을 직접 제어한다. 작동 중에 기능이 필요할 때만 능동적으로 사용한다.
- 프레임워크는 개발자가 만든 클래스에 대한 제어 권한을 넘겨받아서 주도적으로 애플리케이션의 흐름을 제어한다. 개발자가 만든 클래스의 오브젝트를 생성하고 실행하는 일은 프레임워크에 의해 진행된다
스프링은 객체지향적인 코드를 짜게 해준다.
의존성
일반적으로 애플리케이션에서 요구하는 다양한 기능들은 여러개의 의존성을 필요로한다.
의존성을 주입하는 방법은 build.gradle에서
- testImplementation platform('org.junit:junit-bom:5.9.1')
- Junit BOM (Bill of Materials): JUnit 테스트 라이브러리의 다양한 버전을 관리하는 데 사용됩니다. BOM은 여러 JUnit 모듈 간의 호환성을 보장합니다.
- testImplementation 'org.junit.jupiter'
- JUnit Jupiter: JUnit 5의 새로운 프로그래밍 모델과 확장 모델을 제공합니다. 주로 단위 테스트와 통합 테스트를 작성하는 데 사용됩니다.
- implementation 'com.fasterxml.jackson.core:jackson-databind:2.17.1'
- Jackson Databind: JSON 데이터를 Java 객체로 변환하거나 Java 객체를 JSON 데이터로 변환하는 데 사용됩니다. JSON 직렬화 및 역직렬화를 위한 라이브러리입니다.
- implementation 'org.springframework.boot'
- Spring Boot Starter: 스프링 부트 프로젝트의 기본 설정을 제공합니다. 여러 스프링 부트 모듈을 한 번에 가져와 편리하게 사용하게 해줍니다.
- testImplementation 'org.springframework.boot'
- Spring Boot Starter Test: 스프링 부트 애플리케이션을 테스트하기 위한 종합적인 테스트 지원을 제공합니다. JUnit, Mockito, Spring TestContext Framework 등의 종속성이 포함되어 있습니다.
- implementation 'org.springframework.boot'
- Spring Boot Starter Web: 웹 애플리케이션 개발을 위한 종속성을 포함합니다. 스프링 MVC, RESTful 웹 서비스, 내장 톰캣 서버 등을 설정하는 데 사용됩니다.
dependencies {
testImplementation platform('org.junit:junit-bom:5.9.1')
testImplementation 'org.junit.jupiter:junit-jupiter'
implementation 'com.fasterxml.jackson.core:jackson-databind:2.17.1'
implementation 'org.springframework.boot:spring-boot-starter'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
implementation 'org.springframework.boot:spring-boot-starter-web'
}
최종적인 의존성은 위와 같다.
recode
recode라는 것은 이번에 처음 본 것 같다.
recode는 불변이고, 기존 class로 dto를 만들 때와는 다르게 equals, toString, hashcode 등의 기본적인 메서드들을 만들지 않아도 된다.
또한 불변성을 가지고 있어서 한번 정해진 필드는 변하지 않는다.
recode는 엔티티로 사용해서는 안된다.
recode를 사용하는 방법은 다음과 같다.
public record Greeting(
long id,
String name
) {
}
var greeting = new Greeting(1L, "Kakao");
System.out.println(greeting.name);
실습코드 설명
package org.example;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
var greeting = new Greeting(1L, "Kakao");
System.out.println(greeting.sayHello());
var mapper = new ObjectMapper();
System.out.println(mapper.writeValueAsString(greeting));
}
}
위에서 우선 스프링 어플리케이션을 실행하려면 @SpringBootApplication을 사용하고, SpringApplication.run(Application.class,args) 코드를 입력하고 run하면 된다.
그럼 콘솔에 위와 같은 창이 뜨고, localhost:8080을 통해서 들어가면 위 코드의 결과가 출력된다.
또한 json으로 변환하려면 var mapper = new ObjectMapper(); 을 통해서 객체를 생성하고, mapper.writeValueAsString(dto) 이런식으로 한다.
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class GreetingController {
@GetMapping("/hello")
public Greeting hello(@RequestParam("name") String name) {
var greeting = new Greeting(1L, name);
return greeting;
}
}
위에는 get http를 처리하는 것이다. hello로 오는 get 명령어를 처리하고, 이 신호에서 name에 해당하는 데이터를 @RequestParam으로 가져온다.
postman에서
위와 같이 http를 보내면 아래와 같이 잘 받는 것을 알 수 있다.
멋사에서 들을 때는 하나도 모르겠었는데 다시 하니까 뭔가 알것 같다!
이제 과제를 열심히 해봐야겠다.
'Back-end > 카카오테크캠퍼스' 카테고리의 다른 글
[카카오테크캠퍼스] 2주차 과제 코드리뷰 정리 (1) | 2024.07.11 |
---|---|
[카카오테크캠퍼스] 1주차 과제 코드리뷰 정리 (2) | 2024.06.30 |
[카카오테크캠퍼스] 데이터베이스 적용, JDBC (0) | 2024.06.30 |
[카카오테크캠퍼스] Thymeleaf (1) | 2024.06.27 |
[카카오테크캠퍼스] 카카오테크캠퍼스 백엔드 2기 합격! (3) | 2024.04.04 |