개발/활동

코드잇 백엔드 스프린트 - 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. 라이브러리

  1. 제어 흐름의 주체
    • 프레임워크: 실행 흐름을 프레임워크가 주도 (제어의 역전, IoC 개념 적용)
    • 라이브러리: 실행 흐름을 개발자가 직접 제어 (필요한 함수만 호출)
  2. 사용 방식
    • 프레임워크: 개발자는 필요한 메서드만 작성하면, 프레임워크가 알아서 실행
    • 라이브러리: 개발자가 직접 호출하여 사용
  3. Spring Framework vs. Java 라이브러리
    • Spring은 개발자가 비즈니스 로직을 작성하면 Spring이 실행 순서를 결정함.
    • 일반 라이브러리는 개발자가 직접 메서드를 호출하여 사용함.

이제 프레임워크와 라이브러리의 차이를 이해할 수 있을 거예요!

반응형