밤빵's 개발일지
[TIL]20240903 프레임워크와 라이브러리 본문
🤓프레임워크와 라이브러리
프레임워크와 라이브러리는 소프트웨어 개발에서 매우 중요한 개념이다. 개발을 하면서도 자주 접하게 되는데, 이 둘의 차이점을 명확하게 이해하지 못하고 있었다. 이번 개발일지에서는 프레임워크와 라이브러리의 개념과 차이점, 그리고 백엔드 개발에서 자주 사용하는 예시들을 정리해봤다.
▶ 프레임워크란?
프레임워크는 전체적인 구조와 흐름을 미리 정의해 둔 틀이다. 개발자는 그 틀 안에서 코드를 작성하고, 프레임워크가 제공하는 규칙과 구조를 따라야 한다. 프레임워크는 개발자가 호출하는 것이 아니라, 프레임워크가 개발자의 코드를 호출하는 방식이다. 이를 제어의 역전(Inversion of Control, IoC)이라고 한다.
▶ 스프링 프레임워크 예시
대표적인 백엔드 프레임워크로 Spring Framework가 있다. 스프링은 자바 기반의 프레임워크로, 대규모 애플리케이션 개발에 필요한 다양한 기능을 제공한다. IoC, AOP(Aspect-Oriented Programming), 트랜잭션 관리, 데이터 접근, REST API 구축 등 여러 기능을 미리 제공하여 개발자가 쉽게 애플리케이션을 구축할 수 있도록 돕는다.
스프링을 사용하면, 컨트롤러, 서비스, 리포지토리 등 다양한 계층을 정의할 수 있고, 프레임워크가 이러한 계층의 흐름을 자동으로 관리해 준다.
@RestController
@RequestMapping("/api")
public class UserController {
private final UserService userService;
public UserController(UserService userService) {
this.userService = userService;
}
@GetMapping("/users")
public ResponseEntity<List<User>> getAllUsers() {
return ResponseEntity.ok(userService.findAllUsers());
}
}
→ 위의 예시 코드는 스프링 프레임워크의 제어의 역전 개념을 잘 보여준다. UserController는 사용자의 요청을 받고, 내부적으로 UserService를 호출하지만, 애플리케이션 전체 흐름은 스프링 프레임워크가 관리한다.
▶ 라이브러리란?
라이브러리는 특정 기능을 제공하는 코드 모음이다. 개발자가 필요에 따라 라이브러리의 기능을 직접 호출해서 사용한다. 제어 흐름은 여전히 개발자가 관리한다. 라이브러리는 보통 특정 문제를 해결하거나 특정 기능을 쉽게 구현하기 위해 사용된다.
▶ 자바 라이브러리 예시
대표적인 라이브러리로는 Jackson을 들 수 있다. Jackson은 JSON 데이터를 직렬화하거나 역직렬화할 때 자주 사용하는 라이브러리다. 예를 들어, 자바 객체를 JSON 문자열로 변환하거나 JSON 데이터를 자바 객체로 변환할 수 있다.
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonExample {
public static void main(String[] args) throws Exception {
ObjectMapper mapper = new ObjectMapper();
User user = new User("John", "Doe");
// 자바 객체를 JSON으로 변환
String jsonString = mapper.writeValueAsString(user);
System.out.println(jsonString);
// JSON을 자바 객체로 변환
User newUser = mapper.readValue(jsonString, User.class);
System.out.println(newUser.getFirstName());
}
}
→ 이 코드 예시는 Jackson 라이브러리를 통해 JSON 데이터를 처리하는 방식이다. 개발자가 직접 라이브러리의 메서드를 호출하여 필요한 기능을 수행한다.
▶프레임워크와 라이브러리의 차이
프레임워크와 라이브러리는 모두 개발을 도와주는 도구이지만, 그 제어권이 어디에 있느냐에 따라 차이가 있다.
→ 프레임워크:
애플리케이션의 전체 흐름을 제어하고, 개발자가 코드를 프레임워크에 맞춰 작성한다. 프레임워크가 개발자의 코드를 호출한다. (제어의 역전, IoC)
→ 라이브러리:
특정 기능을 제공하며, 개발자가 필요할 때 라이브러리의 메서드를 호출해서 사용한다. 제어권은 개발자에게 있다.
▶정리
이번 개발일지에서는 프레임워크와 라이브러리의 차이, 그리고 자바와 스프링에서의 사용 예시를 살펴보았다. 프레임워크는 전체적인 애플리케이션의 구조와 흐름을 관리하고, 라이브러리는 특정 기능을 제공하여 개발자가 호출하는 방식으로 사용된다. 이를 잘 이해함으로써 개발 시 어떤 도구를 사용할지 더 잘 선택할 수 있다.
'개발Article' 카테고리의 다른 글
[TIL]20240905 프로그래밍 언어가 많은 이유 (0) | 2024.09.05 |
---|---|
[TIL]20240904 commit & merge (0) | 2024.09.05 |
[TIL]20240902 테스트코드 (0) | 2024.09.03 |
[WIL]20240901 N+1문제해결 : 프로젝트 코드에서 해결하기 (1) | 2024.09.01 |
[TIL]20240831 API 게이트웨이 (0) | 2024.08.31 |