개발/활동
코드잇 백엔드 스프린트 - 6주차 위클리-페이퍼 : 프레임워크와 라이브러리의 차이점
나무개발자
2025. 3. 16. 23:49
반응형
프레임워크와 라이브러리의 차이점: 제어 흐름(Control Flow)과 사용 방식 중심으로 설명
소프트웨어 개발에서 **프레임워크(Framework)**와 **라이브러리(Library)**는 코드의 재사용성을 높이고 개발을 더 효율적으로 만드는 중요한 개념입니다.
하지만 **"제어 흐름의 주체(누가 흐름을 결정하는가?)"**와 **"사용 방식"**에 차이가 있습니다.
1️⃣ 제어 흐름의 차이 (누가 주도하는가?)
구분 프레임워크 (Framework) 라이브러리 (Library)
제어 흐름 | 프레임워크가 전체 흐름을 제어하며, 개발자가 필요한 부분만 작성 | 개발자가 직접 흐름을 제어하고, 필요한 라이브러리를 호출하여 사용 |
제어의 역전 (IoC, Inversion of Control) | O (프레임워크가 개발자의 코드를 실행) | X (개발자가 라이브러리를 직접 호출) |
📌 핵심 개념: 제어의 역전(IoC, Inversion of Control)
- 프레임워크는 개발자의 코드를 내부적으로 실행하며, 전체 흐름을 제어함.
- 라이브러리는 개발자가 직접 호출하여 사용하며, 개발자가 흐름을 제어함.
2️⃣ 사용 방식의 차이 (개발자가 코드에서 어떻게 사용하는가?)
✅ 라이브러리 예시 (Java의 Apache Commons 라이브러리)
라이브러리는 개발자가 필요할 때 직접 호출하여 사용합니다.
import org.apache.commons.lang3.StringUtils;
public class LibraryExample {
public static void main(String[] args) {
String str = " Hello, Library! ";
String trimmed = StringUtils.trim(str); // 라이브러리를 직접 호출하여 사용
System.out.println(trimmed); // "Hello, Library!"
}
}
- 제어 흐름: StringUtils.trim()을 개발자가 직접 호출하여 사용.
- 개발자가 필요할 때 원하는 라이브러리 함수를 실행함.
✅ 프레임워크 예시 (Spring Framework)
Spring은 개발자가 특정 메서드만 구현하면 Spring이 내부적으로 알아서 실행합니다.
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
@Transactional
public void registerUser(User user) {
userRepository.save(user);
sendWelcomeEmail(user);
}
}
- 제어 흐름: 개발자는 registerUser()만 작성하지만, Spring이 실행 흐름을 제어하며 트랜잭션을 관리하고, 객체를 주입해줌.
- 개발자가 특정 로직만 작성하면, 실행 순서는 Spring이 결정.
3️⃣ Spring Framework와 일반 Java 라이브러리 비교
구분 Spring Framework 일반 Java 라이브러리 (예: Apache Commons, Lombok 등)
제어 흐름 | Spring이 흐름을 관리 (@Service, @Transactional 등) | 개발자가 직접 메서드를 호출해야 함 |
사용 방식 | 필요한 메서드만 구현하면 Spring이 알아서 실행 | 개발자가 필요한 시점에 직접 호출 |
예제 | @Autowired로 의존성 주입, @Transactional로 트랜잭션 관리 | StringUtils.trim(), List.sort() 같은 유틸성 함수 사용 |
📌 정리: 프레임워크 vs. 라이브러리
- 제어 흐름의 주체
- 프레임워크: 실행 흐름을 프레임워크가 주도 (제어의 역전, IoC 개념 적용)
- 라이브러리: 실행 흐름을 개발자가 직접 제어 (필요한 함수만 호출)
- 사용 방식
- 프레임워크: 개발자는 필요한 메서드만 작성하면, 프레임워크가 알아서 실행
- 라이브러리: 개발자가 직접 호출하여 사용
- Spring Framework vs. Java 라이브러리
- Spring은 개발자가 비즈니스 로직을 작성하면 Spring이 실행 순서를 결정함.
- 일반 라이브러리는 개발자가 직접 메서드를 호출하여 사용함.
이제 프레임워크와 라이브러리의 차이를 이해할 수 있을 거예요!
반응형